不保留实例变量

use*_*140 0 objective-c

在Effective Objective-C 2.0中,有以下代码段:

@interface EOCClass : NSObject {
    id _object;
}
@end

@implementation EOCClass
- (void)setup{
    _object = [EOCOtherClass new];
}
@end
Run Code Online (Sandbox Code Playgroud)

然后,作者说:

"_object实例变量不会在手动引用计数下自动保留其值,但在ARC下也是如此."

我在XCode中测试了上面的代码片段,实例变量确实保留了值(即一切似乎都正常).

作者对上述句子的意思是什么?

小智 5

他的意思是:

_object实例变量不会在手动引用计数下自动保留其值,但在ARC下会保留.

就那么简单.如果这在MRC下工作,它的作用有一个原因:

[SomeClass new]
Run Code Online (Sandbox Code Playgroud)

相当于

[[SomeClass alloc] init]
Run Code Online (Sandbox Code Playgroud)

所以_object无论如何都会有一个参考数.