我可以自动释放以下内容吗?
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
它可以工作并删除我收到的分析器警告。如果没有,我将如何正确发布它。
谢谢你的帮助
我可以自动释放以下内容吗?
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
它可以工作并删除我收到的分析器警告。如果没有,我将如何正确发布它。
谢谢你的帮助
这是正确的方法(尽管现在正确的方法是使用 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];
这是对的。
leftBarButtonItem 是一个保留 UIBarButtonItem 的属性,所以是的,这是一个好方法。
如果没有自动释放消息,它将导致内存泄漏。
这是正确的,你也可以这样做
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = item;
[item release];