首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须释放accessoryView吗?

我必须释放accessoryView吗?
EN

Stack Overflow用户
提问于 2011-08-25 15:57:08
回答 2查看 112关注 0票数 1
代码语言:javascript
复制
UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = switchView;
[switchView adTarget:selfaction:@selector(switchChanged:)forControlEvents:UIControlEventValueChanged];
[switchView release];

我在tableView: cellForRowAtIndexPath:中分配了开关视图。我必须在dealloc模式下释放cell.accessoryView吗?

这不是比上面更好吗?

代码语言:javascript
复制
cell.accessoryView = [[[UISwitch alloc] initWithFrame:CGRectZero]autorelease];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-25 16:13:31

您可以在设置cell.accessoryView后立即释放交换机。这两个代码片段之间没有太大的区别,除了通常建议您应该尽可能显式地释放内存。Autorelease通常在其他情况下使用,例如当您必须从方法中返回值时。

票数 0
EN

Stack Overflow用户

发布于 2011-08-25 16:12:51

出于这个问题的目的,它们都做了同样的事情。它们之间真的没有区别。

在内存管理规则方面,调用autorelease可以被认为与调用release做同样的事情-它实际上是一个延迟释放调用。你基本上是在说,“请在将来的某个时候释放这个对象”。当然,在您的示例中,调用[switchView release]只会减少保留计数,而不是完全释放对象,因为您已经通过将其设置为单元格的附件视图来保留它。

这里有一个类似的例子来处理优缺点(或缺乏):

Autorelease vs. Release

你可以在这里阅读苹果关于自动释放池的指南和文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html%23//apple_ref/doc/uid/20000047-CJBFBEDI

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7186865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档