我是目标c的新手。我了解-init()
是instance method
并返回一个对象
例如myObj=[myObj init];
将返回一个对象myObj.
但是,如果self =[super init];
通常是super refer to parent
类,例如NSObject
这是class, not instance
。
所以,Is -init() instance method or class method for super init?
感谢
答案 0 :(得分:3)
init
是一种实例方法。您在super
上调用它的事实不会改变它。
请记住,super
不代表您的对象的类,而是您的对象在类层次结构中被视为其父类的实例。
您永远不会致电myObj=[myObj init];
- 您致电myObj = [[MyObj alloc] init]
。请注意myObj
(变量)和MyObj
(此变量是实例的类)之间的大小写差异。
答案 1 :(得分:1)
通常init
以alloc
之后的方式使用{/ p>}
MyObject* obj = [[MyObject alloc] init];
和alloc
创建对象实例,因此init
是一个实例方法,当你覆盖它时,总是调用父类init
是个好习惯。
尝试阅读此article。
答案 2 :(得分:1)
Super指的是当前对象中父类的方法。调用super init
将在当前对象(init
)上调用方法self
,但将使用超类的实现。所以没有 - init
不是静态方法(由于init方法之前的+
,这是可见的)。您可以拨打super whatMethodYouWantFromSuperclass
,即使它不是静态的。静态方法不是在对象(self
)上调用,而是在类([NSObject yourStaticMethod]
)上调用。