當我不將自己指定給它的超級初始化時,是否有任何含義,但是指向完全不同的指針,即使是靜態的指針?弧線行爲是否正確?這種行爲的含義是什麼?在初始化時將自己指定給不同的指針
static NSObject * StaticObject;
- (instancetype)init {
self = StaticObject;
if (self) {
}
return self;
}
當我不將自己指定給它的超級初始化時,是否有任何含義,但是指向完全不同的指針,即使是靜態的指針?弧線行爲是否正確?這種行爲的含義是什麼?在初始化時將自己指定給不同的指針
static NSObject * StaticObject;
- (instancetype)init {
self = StaticObject;
if (self) {
}
return self;
}
ARC會表現得很好。初始化StaticObject時會出現問題。你可以做類似的事情
if (StaticObject == nil) {
self = [super init];
StaticObject = self;
} else {
self = StaticObject;
}
我會認爲NSNull類做這樣的事情。
假設StaticObject不是零並且已被初始化,如果您修改StaticObject,則會引起混淆,因爲其他人可能持有對它的引用。
我不確定這是否安全。我想你會泄漏原始自我的記憶,並可能在以後過度釋放你的單身。 ARC不是魔術,它只是潛入調用者的保留/釋放調用中,而你的邏輯可能永遠不會讓ARC看到alloc調用的結果。