• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Objective-C下对象生命周期以及使用策略

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

对象生命周期的讨论主要关注整个周期中的对象管理机制。但是,指导如何使用这些机制的是对象的所有权策略。这个策略可以概括如下:
1、如果您通过分配和初始化(比如[[MyClass alloc] init])的方式来创建对象,您就拥有这个对象,需要负责该对象的释放。这个规则在使用NSObject 的便利方法new 时也同样适用。
2、如果您拷贝一个对象,您也拥有拷贝得到的对象,需要负责该对象的释放。
3、如果您保持一个对象,您就部分拥有这个对象,需要在不再使用时释放该对象。反过来,如果您从其它对象那里接收到一个对象,则您不拥有该对象,也不应该释放它(这个规则有少数的例外,在参考文档中有显式的说明)。

和其它规则一样,这些策略也有一些例外和经常出错的地方:
1、如果您通过类工厂方法来创建对象(比如 NSMutableArray arrayWithCapacity:方法),则可以假定您接收到的对象已经自动被放到自动释放池了。您不应该自行将它释放,如果您需
要保持该对象,则应该保持(retain)它。
2、为了避免循环引用,子对象不能保持它的父对象(父对象是该子对象的创建者,或者将该子对象作为实例变量持有的对象)。
请注意:在上面的原则中提到的“释放”是指向对象发送一个release 或autorelease 消息。

这个策略,可以使得你在Cocoa代码中避免内存泄漏

在XCode4上,使用相关工具也可以检测对象周期,建议在代码编写过程中就要以上述标准来处理

【来自Cocoa基本原理指南】


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在Objective C中定义私有的成员变量发布时间:2022-07-12
下一篇:
Objective-C中的Block发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap