Objective-c super init是一个类方法还是实例方法?

时间:2012-04-09 11:02:07

标签: iphone objective-c xcode class

我是目标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?

感谢

3 个答案:

答案 0 :(得分:3)

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

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

您永远不会致电myObj=[myObj init]; - 您致电myObj = [[MyObj alloc] init]。请注意myObj(变量)和MyObj(此变量是实例的类)之间的大小写差异。

答案 1 :(得分:1)

通常initalloc之后的方式使用{/ p>}

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

alloc创建对象实例,因此init是一个实例方法,当你覆盖它时,总是调用父类init是个好习惯。

尝试阅读此article

答案 2 :(得分:1)

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