Objective c XCode 4.2和dealloc已过时

Objective c XCode 4.2和dealloc已过时,objective-c,Objective C,我开始使用Xcode 4.2,看起来你不能再像以前那样使用dealloc和release了。 如果我编写以下实现: @implementation Person @synthesize firstName; @synthesize lastName; - (void) dealloc { [firstName release]; [lastName release]; [super dealloc]; } 编译器让我烦恼的是,在自动引用计数模式下发布是不可用的。这是

我开始使用Xcode 4.2,看起来你不能再像以前那样使用dealloc和release了。 如果我编写以下实现:

@implementation Person

@synthesize firstName;
@synthesize lastName;

- (void) dealloc
{
    [firstName release];
    [lastName release];
    [super dealloc];
}

编译器让我烦恼的是,在自动引用计数模式下发布是不可用的。这是Objective-C2.0的一个特性吗?在哪里可以阅读更多有关它的信息?

这实际上是(ARC)的一个功能。如果关闭ARC,您可以使用手动内存管理或(仅限Mac OS X)垃圾收集。

在ARC中,您不需要使用释放或自动释放,编译器会为您完成所有操作。通过在苹果开发者网站上的快速搜索,找到了这个问题

当使用需要与ARC和非ARC兼容的库代码时,该怎么办?
我们是否被迫编写同一代码的两个版本,其中唯一的区别是删除了dealoc方法?

是的,这是在Xcode 4中引入的Obj-C 2.0的一个新功能。澄清:Obj-C 2.0早在ARC之前就已经推出了,ARC是Xcode 4.2附带的LLVM3编译器的一个功能。它在Xcode 4.0或4.1中不可用。听起来好像ARC本身就是一个功能:p感谢您的澄清,我将在这一点上看看ARC。在他回来说他的CF代码泄漏之前:您不能对Cocoa对象使用
保留
释放
,或
自动释放
。您仍然需要为CoreFoundation对象使用内存管理函数,并且在向Cocoa/CoreFoundation进行强制转换时需要使用宏,以便编译器知道它是否负责管理这些强制转换对象的内存。