为什么retainCount增加?
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_testObject = [[TestObject alloc] init];
NSLog(@"_testObject rc = %d", _testObject.retainCount);
NSLog(@"testObject rc = %d", self.testObject.retainCount);
}
而且是的TestObject为什么retainCount增加?
@property (retain) TestObject *testObject;
为什么这些NSLog()
1和2,分别的输出?属性的retainCount
和底层对象是不同的?
我猜那是因为你的财产没有被定义为nonatomic
,所以你得到保留/自动释放对象。试着改变你的财产申报这样的:
@property (retain, nonatomic) TestObject *testObject;
正是这个原因,谢谢! – softempire 2012-02-09 14:46:43
我没有看到的原子访问的相关性,在这里。你能解释一下吗? – Justin 2012-02-09 14:52:48
啊,我现在跟着。我忘记了合成的setter的原子属性的细节。这里的[商务部](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html)。 – Justin 2012-02-09 15:01:54
能否请您复制粘贴第二行'的NSLog(@ “的TestObject RC =%d”,self.testObject.retainCount);'几次尝试一下?你会一直得到2,还是计数增加?只是好奇...如果它升起,你有一个保留/ autorelease属性。 – dasblinkenlight 2012-02-09 14:42:29
已经找到了原因,没有添加非原子。 – softempire 2012-02-09 14:47:43
retainCount没用。别叫它。 – bbum 2012-02-09 16:12:59