autorelease了还要retain吗?看看这句代码

sunshine_anycall 2011-11-13 07:34:55
[[[[UISwitch alloc] initWithFrame:CGRectMake(206, 9, 0, 0)] autorelease] retain]
...全文
268 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员小迷 2012-01-11
  • 打赏
  • 举报
回复
需要release
ceewn 2011-11-17
  • 打赏
  • 举报
回复
alloc 给UISwitch实例分配了内存,autorelease 将此对象放入自动释放池,等价于交由应用程序运行完自动释放掉,不需要在手动release。所以此处retain 多此一举。楼主关心的UISwitch 对象在接下来的程序中还是可以继续使用的。
ixcoder 2011-11-14
  • 打赏
  • 举报
回复
你得显示 再 release
InterRonaldo 2011-11-14
  • 打赏
  • 举报
回复
楼主看看这篇文章也许会对你有所启发

http://www.cnblogs.com/MobileDevelop/archive/2010/07/19/1779755.html
InterRonaldo 2011-11-14
  • 打赏
  • 举报
回复
当你alloc之后就需要自己来释放资源调用release
alloc和autorelease 一起使用时 是把realease的操作交给系统在之后自动调用完成 而不需要再release了

[[[[UISwitch alloc] initWithFrame:CGRectMake(206, 9, 0, 0)] autorelease] retain]

如果像楼主的这样的调用,就等于保持变量不进行释放,因为系统调用了release后依然没有把计数器减为0

在这种情况下仍然需要手动释放这个变量的

所以 如果不是全局变量 使用了autorelease后不需要进行retain的操作了
sunshine_anycall 2011-11-13
  • 打赏
  • 举报
回复
布置如此吧
flyeag 2011-11-13
  • 打赏
  • 举报
回复
这样也没有错,多此一举,autorelease -1 retain +1

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧