请问我应该使用哪个版本,在我的旧应用程序中我似乎使用“B”但是当我在网上查看很多示例时我看到很多看起来像“A”的版本。
// A
- (id)initWithCoder:(NSCoder *)decoder {
self=[super initWithCoder:decoder];
if(self) {
...
或
// B
- (id)initWithCoder:(NSCoder *)decoder {
self=[super init];
if(self) {
...
最佳答案
取决于父类(super class)是否符合NSCoding
协议(protocol)。如果是,则必须调用 [super initWithCoder:decoder]
。如果没有,则必须调用父类(super class)的指定初始化程序。
例如,如果你的类是NSObject
的直接子类,你会调用[super init]
,NSObject
的指定初始化器, 因为 NSObject
不符合 NSCoding
协议(protocol)。
关于iphone - InitWithCoder,[super init] 还是 [super initWithCoder]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6820415/