3

Book我发现了一个句子,告诉我ARC只从Foundation发布Object。这是真的?所以,如果我有:ARC适用于所有对象?

MySimpleClass *objectFromMySimpleClass = [MySimpleClass alloc] init]; 

我应该释放objectFromMySimpleClass?我怎样才能做到这一点?当我尝试

[objectFromMySimpleClass release]; 

我看到在Xcode提示无效的“发布”,然后编译器说,我不能这样做,因为ARC。发生什么了?

等东西。当我使用NSCoping协议时,我应该也释放对象当我使用副本

+1

这不是指'NSObject'类吗?如果是这样,你的班级是从那个班级派生的,所以一切都很好。 – trojanfoe 2012-04-19 09:46:35

+0

我只是跟着书的作者;)所以,当我从NSObject继承这是非常酷。这是有道理的,我没有想到这一点。谢谢 – Kuba 2012-04-19 09:50:21

+0

你确定你正在链接到正确的书吗?那个是在ARC发布之前写的,所以我怀疑它里面有没有提及ARC。 – 2012-04-19 14:44:04

回答

5

MySimpleClass继承NSObject,因此它是一个基础对象,所以它可以由ARC管理。

+0

除类别覆盖保留/释放的情况外。在类似的类中(例如撰写本文时的NSWindow),我相信你必须使用非零弱变量。 – 2012-05-31 00:27:37

1

是的,ARC适用于所有对象,并且无法在运行时使用release和retain。