在大多数情况下使用ARC(自动引用计数),我们不需要考虑使用Objective-C对象的内存管理.不允许再创建NSAutoreleasePools,但是有一个新的语法:
@autoreleasepool {
    …
}
我的问题是,当我不应该手动释放/自动释放时,为什么我需要这个呢?
编辑:总结我从所有的答案和评论中得到的简洁:
新语法:
@autoreleasepool { … } 是新的语法
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
…
[pool drain];
更重要的是:
autorelease以及release.@autoreleasepool:
myRunLoop(…) { @autoreleasepool { … } return success; }.memory-management objective-c xcode4.2 automatic-ref-counting
如果已在禁用ARC的情况下创建项目,如何启用它,反之亦然?
我试图从图像数组中在iPhone中制作一个简单的动画图像:
- (void)viewDidLoad {
    NSArray *imageArray;
    imageArray = [[NSArray alloc] initWithObjects:
                  [UIImage imageNamed:@"sun1"],
                  [UIImage imageNamed:@"sun2"],
                  nil];
    fadeImage.animationImages = imageArray;
    fadeImage.animationDuration = 1;
    [imageArray release];  //==== HERE IS WHERE I GET THE ERROR ======
我怎样才能解决这个问题?
据我所知,我知道我们使用-fno-objc-arcflag为ARC项目中不支持ARC的文件禁用ARC.
此外,我们还可以使用-fobjc-arcflag来启用ARC,以便在非ARC项目中支持ARC文件.
但是,如果我想将我的ARC项目(非特定文件)转换为非ARC项目,那么我应该如何进行相同的操作呢?
有人请介绍一下同样的问题.
提前致谢.
我有一个工作正常的应用程序.然后我尝试将导航控制器嵌入到tabbarcontroller中,接下来我知道我在编译期间开始收到这些错误.
谁会知道为什么这些会发生?某些设置是否未经检查或意外检查?
谢谢,亚历克斯