为什么经常在使用局部var后立即调用release,而不仅仅是自动释放
||
我经常看到如下内容:
UIBarButtonItem *anotherButton = [[UIBarButtonItem alloc] initWithTitle:@\"Show\" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)];
self.navigationItem.rightBarButtonItem = anotherButton;
[anotherButton release];
特别是在使用本地变量(在这种情况下为\'anotherButton \')的情况下,然后将其释放。这与在分配它并在方法结束之前确保已使用它时自动释放它完全相同吗?即:
UIBarButtonItem *anotherButton = [[[UIBarButtonItem alloc] initWithTitle:@\"Show\" style:UIBarButtonItemStylePlain target:self action:@selector(refreshPropertyList:)] autorelease];
self.navigationItem.rightBarButtonItem = anotherButton;
我之所以问是因为,我第一次看到它是在很多时候完成的,但是对我来说,直接将其完全自动释放的错误感较小。这仅仅是个人风格的问题,还是这两种方法有区别,除了一种方法是在用完所有对象之后有条不紊地释放对象,另一种则是小心地声称它一开始就被释放了,所以不会偶然忘记,都有优点。
没有找到相关结果
已邀请:
4 个回复
俺呵誓放胳
冲汉
联课
盛虱
,也不太可能将其释放,因为对
的赋值可能会导致
被保留。 在这种情况下,IMO和在这种情况下尽快调用release的最佳论据是,通过释放ѭ2,您可以明确证明已使用完该事实。另外,如果您在发行后使用
,则静态分析仪也会对您有帮助。这两个事实可以帮助您避免错误,并使代码更易于理解。 在这种情况下支持自动释放的观点是,它可能在某种程度上更易于阅读。我认为Apple提供给我们所有这些便捷方法的原因,例如+ stringWithFormat:-它们使您可以通过一种方法(而不是三种方法)创建并使用所需的字符串。