我做的第一件事是创建一个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