在有效的Objective-C 2.0有以下剪斷代碼:沒有在實例變量保留
@interface EOCClass : NSObject {
id _object;
}
@end
@implementation EOCClass
- (void)setup{
_object = [EOCOtherClass new];
}
@end
筆者接着說:
「的_object實例變量不會自動保留其值在手動引用計數下,但在ARC下。「
我在XCode中測試了上面的代碼片段,並且實例變量確實保留了值(即一切看起來都很好)。
作者用上面的語句表達了什麼?
我同意你的回答,但它沒有說明爲什麼作者會說,_object不會自動保留其在MRC下的值,因爲[SomeClass new]會使對象的保留計數爲1,因此將保留在MRC下。 – user2599140
@ user2599140不,它不會被保留。它將被分配一個引用計數。 MRC不使用強指針,ARC使用強指針,並且在ARC下,它將被自動保留**,另外**被分配(因爲ivars默認強壯)。 – 2013-07-28 11:09:51
@ user2599140希望H2CO3能幫你解釋一點。我同意這本書中的措辭很尷尬,使它有點混亂。我一定會爲未來解決這個問題。如果您願意,請隨時在我們的電子郵件鏈上繼續聊天。絕對是一個好主意,以確保你瞭解這個東西! – mattjgalloway