2012-02-09 75 views
1
- (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和底層對象是不同的?

+0

能否請您複製粘貼第二行'的NSLog(@ 「的TestObject RC =%d」,self.testObject.retainCount);'幾次嘗試一下?你會一直得到2,還是計數增加?只是好奇...如果它升起,你有一個保留/ autorelease屬性。 – dasblinkenlight 2012-02-09 14:42:29

+1

已經找到了原因,沒有添加非原子。 – softempire 2012-02-09 14:47:43

+2

retainCount沒用。別叫它。 – bbum 2012-02-09 16:12:59

回答

6

我猜那是因爲你的財產沒有被定義爲nonatomic,所以你得到保留/自動釋放對象。試着改變你的財產申報這樣的:

@property (retain, nonatomic) TestObject *testObject; 
+0

正是這個原因,謝謝! – softempire 2012-02-09 14:46:43

+0

我沒有看到的原子訪問的相關性,在這裏。你能解釋一下嗎? – Justin 2012-02-09 14:52:48

+0

啊,我現在跟着。我忘記了合成的setter的原子屬性的細節。這裏的[商務部](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html)。 – Justin 2012-02-09 15:01:54