我做的第一件事是創建一個ViewController並將其推送到導航控制器。正確地釋放viewController,將其設置爲委託給其他類的自我?
viewController = [[MyViewController alloc] init];
[navController pushViewController:viewController animated: NO];
[viewController release];
保留計數是2(pushViewController使用2保留顯然,但不是我的責任)迄今爲止很好。
Inside MyViewController我創建了一個類的實例,並將ViewController設置爲委託給實例。
timer = [[MyBackgroundTimer alloc] initWithInterval:20];
[timer setDelegate:self];
現在viewControllers保留計數增加了1 becouse setDelegate的:
但是當我釋放的viewController後,它永遠不會調用dealloc的becouse我還有一個保留計數。
當您將自己設置爲委託時,應如何正確刪除保留計數?
你不應該保留你的代表。當'MyViewController'準備釋放時,它應該釋放'MyBackgroundTimer'或將'MyBackgroundTimer'的委託設置爲零。 – kubi 2011-05-15 19:48:51
甚至讀過答案?多數民衆贊成在我的'你的班MyBackgroundTimer應該有委託財產作爲分配,而不是保留。'...你知道什麼分配意味着什麼? – 2011-05-15 21:17:37
...然後你繼續說,「這個班級應該保留代表......」我誤解了你的答案嗎? – kubi 2011-05-15 21:35:48