你可以爲一個類創建一個自定義的初始化程序嗎?自定義的初始化程序沒有重寫init?
你能舉例來說事:
+ (instancetype)node {
BetterSKNode *newNode = [[BetterSKNode alloc]initWithRootName:@"ROOT"];
return newNode;
}
- (id)initWithRootName:(NSString *)rootName {
self = [super init];
if(self) {
_rootName = rootName;
}
return self;
}
,如果你做的應該是上面或self = [super init];
self = [self init];
它很容易增加(見下文),但我只是好奇,如果有必要嗎?
- (id)init {
self = [super init];
if(self) {
// ...
}
return self;
}
編輯:
技術上正確的方法是由init調用「指定初始化器」來掩蓋的可能性,有人可能在未來只需要調用[[類的alloc]初始化]
- (id)init {
self = [self initWithRootName:@"ROOT"];
return self;
}
'[self init]'會導致無限遞歸。你想要做什麼? –
對不起,你是在問如何爲一個班級設置自定義的初始化程序? –
無限遞歸,initWithRootName:調用[self init],然後[self init]調用[super init]; – fuzzygoat