0

我可以自动释放以下内容吗?

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];

它可以工作并删除我收到的分析器警告。如果没有,我将如何正确发布它。

谢谢你的帮助

4

3 回答 3

1

这是正确的方法(尽管现在正确的方法是使用 ARC)。

一种可接受的替代方案(在非 ARC 环境中)是:

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = barButton;
[barButton release];

navigationItem 的设置器保留按钮本身,因此必须释放 alloc/init 返回的对象,以便以所述方式之一平衡保留计数(alloc/init 返回的对象保留计数为 1,并且设置器将 +1 添加到)。

这绝对推荐:

[self.navigationItem.leftBarButtonItem release];
于 2012-10-18T14:41:35.177 回答
1

这是对的。

leftBarButtonItem 是一个保留 UIBarButtonItem 的属性,所以是的,这是一个好方法。

如果没有自动释放消息,它将导致内存泄漏。

于 2012-10-18T14:42:21.470 回答
1

这是正确的,你也可以这样做

UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = item;
[item release];
于 2012-10-18T14:43:53.710 回答