【读书笔记】iOS-自动释放池
2015-09-09 09:04
281 查看
一,NSObject类提供了一个autorelease方法:
-(id)autorelease;
该方法预先设定了一条将来在某个时间发送的release消息,其返回值是接收消息的对象。retain消息采用了相同的技术,使嵌套调用更加容易。当给一个对象发送autorelease消息时,实际上是将该对象添加到NSAutoreleasePool中。当自动释放池被销毁时,会向该池中所有对象发送release消息。
二,
NSAutoreleasePool *pool;
pool=[[NSAutoreleasePool alloc]init];
...
[pool release];
创建一个自动释放池时,该池自动成为活动的池。释放该池时,其保留计数器值归0,然后,该池被销毁。在销毁过程中,该池释放其包含的所有对象。
当使用AppKit时,Cocoa定期自动为你创建和销毁自动释放池。通常是在程序处理完当前事件(如鼠标点击或按键)以后执行这些操作。你可以使用做任意多的自动释放对象,当不再使用它们时,自动释放池将自动为你清理这些对象。
三,你可能已经在Xcode的自动生成代码中遇见过另一种销毁自动释放池中对象的方式:-drain方法。该方法只是清空自动释放池而不销毁它。-drain方法只适用于MAC OS X 10.4及更高版本。在我们自己编写(而不是由Xcode生成)的代码中,我们使用-release方法,因为该方法适用于Mac OS的所有版本。
参考资料:《Object-C基础教程》
-(id)autorelease;
该方法预先设定了一条将来在某个时间发送的release消息,其返回值是接收消息的对象。retain消息采用了相同的技术,使嵌套调用更加容易。当给一个对象发送autorelease消息时,实际上是将该对象添加到NSAutoreleasePool中。当自动释放池被销毁时,会向该池中所有对象发送release消息。
二,
NSAutoreleasePool *pool;
pool=[[NSAutoreleasePool alloc]init];
...
[pool release];
创建一个自动释放池时,该池自动成为活动的池。释放该池时,其保留计数器值归0,然后,该池被销毁。在销毁过程中,该池释放其包含的所有对象。
当使用AppKit时,Cocoa定期自动为你创建和销毁自动释放池。通常是在程序处理完当前事件(如鼠标点击或按键)以后执行这些操作。你可以使用做任意多的自动释放对象,当不再使用它们时,自动释放池将自动为你清理这些对象。
三,你可能已经在Xcode的自动生成代码中遇见过另一种销毁自动释放池中对象的方式:-drain方法。该方法只是清空自动释放池而不销毁它。-drain方法只适用于MAC OS X 10.4及更高版本。在我们自己编写(而不是由Xcode生成)的代码中,我们使用-release方法,因为该方法适用于Mac OS的所有版本。
参考资料:《Object-C基础教程》
相关文章推荐
- IOS中 Block简介与用法(一)
- IOS 根据日期,获取该日期所在周,月,年的开始日期,结束日期 的方法,还有下一周或者上一周的时间
- iOS 笔记七:block
- iOS SDK: Working with URL Schemes
- The Complete Tutorial on iOS/iPhone Custom URL Schemes
- iOS开发一款小巧简洁的日历控件
- iOS开发利器-CocoaPods安装和使用教程
- ios-音频播放-短视频加载-封装工具类
- Runtime运行时机制
- iOS textView 高度自适应
- 给学习iOS开发同学的建议
- 零基础学iOS开发
- iOS 开发工程师
- iOS判断是否含有非法字符代码
- iOS-runtime-根据类名推送到任意控制器,且实现属性传值
- iOS分页控制器
- iOS-QQ好友列表实现
- IOS 入门学习记录
- IOS 绘制背景色渐变的矩形
- IOS真机推送