Objective c 初始化NSObject的子类

Objective 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中创建子类,那么编写自定义初始值设定项的正确方法是什么 我需要在初始值设定项中使

MySubClass.h

@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惯用的括号会起作用。