Objective c 初始化NSObject的子类
MySubClass.hObjective c 初始化NSObject的子类,objective-c,Objective C,MySubClass.h @interface MySubClass : NSObject { } MySubClass.m @interface MySubClass () @end @implementation MySubClass -(MySubClass*)initMySubClass:(id)view{ // initialize my SubClass } @end 如果我从NSObject中创建子类,那么编写自定义初始值设定项的正确方法是什么 我需要在初始值设定项中使
@interface MySubClass : NSObject
{
}
MySubClass.m
@interface MySubClass ()
@end
@implementation MySubClass
-(MySubClass*)initMySubClass:(id)view{
// initialize my SubClass
}
@end
如果我从NSObject中创建子类,那么编写自定义初始值设定项的正确方法是什么
我需要在初始值设定项中使用“init”吗
-(instancetype)initMySubClass:(id)view {
if(self = [super init]) {
// custom initialization here
}
return self;
}
苹果文档如下:
注意,对于
NSObject
本身,init
方法只返回self
。然而,调用init
仍然是最佳实践。例如,如果苹果将来在那里加入额外的初始化会怎么样?或者,如果你想改变超类呢?@michaelccurtis的答案是正确的。但是关于如何在Obj-C中进行初始化
基本上,每个类都可以有一个指定的初始值设定项,如果您将其子类化,则必须重写该初始值设定项并从子类的指定初始值设定项调用super。文档中的图形更清楚地说明了这一点。条件中的赋值将生成编译器警告。用一行额外的代码或一组额外的参数进行抑制
[self init]
是一个比super更好的选择,如果这个子类实现了它,如果它没有实现,那么它是无害的。这个赋值从未为我生成编译器警告(尽管我记得我想知道为什么——我认为这只是因为这是一个非常常见的习惯用法)。可能您指定了-Wno括号。
出现错误:对于self=[super init],无法将self分配给init中的方法外部family@danh我认为-Wno惯用的括号会起作用。