2016-10-21 27 views
0

當我不將自己指定給它的超級初始化時,是否有任何含義,但是指向完全不同的指針,即使是靜態的指針?弧線行爲是否正確?這種行爲的含義是什麼?在初始化時將自己指定給不同的指針

static NSObject * StaticObject; 

- (instancetype)init { 

    self = StaticObject; 
    if (self) { 

    } 
    return self; 
} 

回答

2

ARC會表現得很好。初始化StaticObject時會出現問題。你可以做類似的事情

if (StaticObject == nil) { 
    self = [super init]; 
    StaticObject = self; 
} else { 
    self = StaticObject; 
} 

我會認爲NSNull類做這樣的事情。

假設StaticObject不是零並且已被初始化,如果您修改StaticObject,則會引起混淆,因爲其他人可能持有對它的引用。

0

我不確定這是否安全。我想你會泄漏原始自我的記憶,並可能在以後過度釋放你的單身。 ARC不是魔術,它只是潛入調用者的保留/釋放調用中,而你的邏輯可能永遠不會讓ARC看到alloc調用的結果。