出於好奇/興奮我一直在閱讀關於ARC的任何信息,但我有一個問題,我似乎無法找到答案。不確定人們是否可以通過NDAs或其他方式來回答這個問題,但我仍然會問。 (這裏有很多信息.......)ARC和自定義deallocs
ARC公佈的一件事是,您不需要再編寫dealloc方法。涼。但這是真的嗎?
如果我有一個NSNetService什麼的,通常在我的dealloc我會寫
- (void)dealloc
{
[netService_ setDelegate:nil];
[netService_ stop];
[netService_ release];
[super dealloc];
}
不ARC現在照顧的是什麼?還是不夠聰明知道這樣的東西?如果它沒有足夠的智能來知道這些東西(意思是在某些情況下我仍然需要編寫自定義的dealloc),我是否必須發佈所有的ivars?或者只是那些不會是簡單的版本?
- (void)dealloc
{
[netService_ setDelegate:nil]; // if these 3 lines are necessary...
[netService_ stop];
[netService_ release];
[myString_ release]; // would this one still be? or would ARC know to automagically add this
[super dealloc]; // seems this is forbidden in ARC
}
我想我的問題真的歸結爲這個:ARC說你不必在大多數情況下寫deallocs了;那麼你需要什麼情況?
每當你寫自己的dealloc時,不要忘記調用[super dealloc](如你在示例代碼中所示) – Danra
謝謝。我會編輯。我離開了它,因爲我認爲在啓用ARC時這是錯誤的。 – user988375
@Danra,你不要在ARC下調用'[super dealloc]'。 – Jim