1

我是目标 c 的新手。我知道这-init()是一个instance method并返回一个对象,例如myObj=[myObj init];将返回一个对象myObj.

但是,如果self =[super init];通常是super refer to parentclass eg NSObjectwhich is a class, not instance.

所以,Is -init() instance method or class method for super init?

谢谢

4

3 回答 3

3

init是一个实例方法。您调用它的事实super不会改变它。

请记住,super这并不代表您的对象的类,而是您的对象在类层次结构中被视为其父类的实例。

而且你从不打电话myObj=[myObj init];——你打电话myObj = [[MyObj alloc] init]myObj注意(一个变量)和MyObj(这个变量是一个实例的类)之间的大小写差异。

于 2012-04-09T11:09:56.980 回答
1

一般init是这样使用后alloc的:

MyObject* obj = [[MyObject alloc] init];

alloc创建对象实例,init实例方法也是如此,当你重写它时,总是调用父类是一个好习惯init

尝试阅读这篇文章

于 2012-04-09T11:05:17.607 回答
1

Super 是指当前对象中父类的方法。调用super init将调用init当前对象 ( self) 上的方法,但将使用超类的实现。所以no -init不是静态方法(由于+在 init 方法之前,这将是可见的)。super whatMethodYouWantFromSuperclass即使它不是静态的,您也可以调用。静态方法不是在对象 ( self) 上调用,而是在类 ( [NSObject yourStaticMethod]) 上调用。

于 2012-04-09T11:11:25.207 回答