Why is self allowed in static context in objective c

前端 未结 3 1552
清歌不尽
清歌不尽 2020-12-02 16:45

Why is using self allowed in static context in Objective-C?

I thought it was allowed and then I encountered memory errors that took me a week to find ou

3条回答
  •  星月不相逢
    2020-12-02 17:30

    1. There is no such thing as a "static context" in Objective-C. What we have instead are "class methods". They definitely are not "static" methods.
    2. Class methods (ones prefixed with a +) are really just instance methods on a particular Class object. (did your mind just explode?) And since you have a self variable accessible in an instance method, you naturally have a self variable accessible in the class method as well.
    3. In a class method, self points to the class itself.
    4. Just as you can do [self performAction] inside an instance method to invoke methods on this particular instance, you can do [self performClassAction] inside a class method to invoke methods on this particular class.
    5. All Class objects are subclasses of NSObject. So you can use any NSObject instance method on any Class object. (did your mind just explode again?)

提交回复
热议问题