下载此文档

ObjectiveC程序设计内存管理.pptx


文档分类:IT计算机 | 页数:约53页 举报非法文档有奖
1/53
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/53 下载此文档
文档列表 文档介绍
目录





自动释放池
在处理Foundation程序时,为了使用Foundation对象,必须设置自己的池。系统使用这个池来跟踪对象,以便以后释放。在应用程序中,可以通过调用来建立这个池,如下所示:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
自动释放池
建立了自动释放池之后,Foundation将自动为这个池添加特定的数组、字符串、宇典以及其他对象。使用完该池时,可以发送drain消息来释放它使用的内存:
[pool drain];
任何标记为自动释放并因此添加到池中的对象,将在池本身被释放的同时也自动释放,自动释放池的名称就是由此而来的。事实上,程序中可以有多个自动释放池,并且它们还可以是嵌套的。
自动释放池
如果你的程序产生了大量的临时对象,可能需要在程序中创建多重自动释放池。例如代码片段:
NSAutoreleasePool *tempPool;
...
for (i = 0; i < n; ++i) {
tempPool = [[NSAutoReleasePool alloc] init];
... // lots of work with temporary objects here
[tempPool drain];
}
说明了如何创建几个自动释放池来释放由for循环的每一次迭代而产生的临时对象。应该注意到自动释放池并不包括实际对象本身,仅仅是对释放池要释放的对象的引用。
自动释放池
通过想当前的自动释放池发送一条autorelease消息,可以将一个对象添加到其中,以便以后释放。
[myFraction autorelease];
然后,系统将myFraction添加到自动释放池中以便将来自动释放。
引用计数
Foundation框架提供了一个巧妙的解决方案,用于跟踪对象的引用次数。它涉及一个相当简单直观的技术,称为引用计数。其概念如下:创建对象时,将它的引用次数设置为1,每一次必须保持该对象时,就发送一条retain消息,使其引用次数加1,如下所示:
[myFraction retain];
Foundation框架提供的其他一些方法也可以增加对象的引用次数,例如,把对象添加到数 组中时。不再需要对象时,可以通过发送release消息,使对象的引用次数减1,如下所示:
[myFraction release];
通过向对象发送retainCount消息,可以获得该对象的引用计数,注意,它将返回一个NSUinteger类型的无符号整数。
Program
// Introduction to reference counting
#import <Foundation/>
#import <Foundation/>
#import <Foundation/>
#import <Foundation/>
#import <Foundation/>
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSNumber *myInt = [NSNumber numberWithInteger: 100];
NSNumber *myInt2;
NSMutableArray *myArr = [NSMutableArray array];
NSLog (@”myInt retain count = %lx”,
(unsigned long) [myInt retainCount]);
[myArr addObject: myInt];
NSLog (@”after adding to array = %lx”,
(unsigned long) [myInt retainCount]);
myInt2 = myInt;
NSLog (@”after asssignment to myInt2 = %lx”,
(unsigned long) [myInt retainCount]);
引用计数
[myInt retain];
NSLog (@”myInt after retain = %lx”,
(unsigned long) [myInt retai

ObjectiveC程序设计内存管理 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数53
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wz_198613
  • 文件大小449 KB
  • 时间2021-02-27
最近更新