我是Objective-C的新手,在释放内存时已经遇到了2个相同的问题。 这是:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]intit];
//^^ NSAutoreleasePool is unavailable: not available in automatic reference counting
[lord release];
//^^ Same error as NSAutoreleasePool
我不确定为什么这不起作用,它似乎对其他人有用。 无论如何,如果我能得到一些帮助,那就太棒了,非常感谢!
使用自动引用计数时,不能手动使用保留/释放/自动释放选择器。手动引用计数是内存管理的旧方法 - 现在,您应该始终使用 ARC,而忘记手动发送"发布"消息,因为它们是由编译器自动插入的。
NSAutoreleasePool 被替换为语言级构造@autoreleasepool:https://developer.apple.com/library/ios/documentation/cocoa/conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html
编辑:@autoreleasepool示例:
在这里,内存中有 10000 个对象,直到父自动发布池耗尽:
for(int i = 0; i < 10000; i++){
NSString * s = [NSString alloc] initWithFormat:@"%d",i];
}
在内存使用高峰期,此算法的内存中有 10000 个 NSStrings。但是,请考虑以下变体:
for(int i = 0; i < 10000; i++){
@autoreleasepool{
NSString * s = [NSString alloc] initWithFormat:@"%d",i];
}
}
这样,一次只有一个 NSString,在每次迭代结束时都会解除分配。