【发布时间】:2011-11-17 09:53:14
【问题描述】:
我阅读了 NSAutoReleasePool 并了解它使 iPhone 上的内存管理更容易。它在 NSObject 上可用,因此自动释放消息可用于每个对象实例。此外,我不应该经常使用自动释放,因为 NSAutoReleasePool 使用缓存内存,如果有很多自动释放的对象,您可能会耗尽内存。我的理解正确吗?
我不明白的一件事是像在以下方法中那样显式创建 NSAutoreleasePool 的目的是什么?它来这里的目的是什么?是不是像自动释放 imgData、img 对象一样?因为我可以看到这些对象并没有在这个方法中释放。
- (void)loadImage {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *img = [UIImage imageNamed: @"default_user.png"];
if(![[imgURL absoluteString] isEqualToString: @"0"]) {
NSData *imgData = [NSData dataWithContentsOfURL: imgURL];
img = [UIImage imageWithData: imgData];
}
if([target respondsToSelector: action])
[target performSelectorOnMainThread: action withObject: img waitUntilDone: YES];
[pool release];
}
谢谢。
【问题讨论】:
标签: iphone objective-c nsautoreleasepool