2012-02-09 13 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なぜ、それぞれ、これらのNSLog() 1と2の出力であるなぜretainCountが増えましたか?

@property (retain) TestObject *testObject; 

のですか?プロパティのretainCountと基礎をなすオブジェクトは異なりますか?

+0

あなたがコピー&ペーストでし二行目 'のNSLog(@ "testObject RC =%dの"、self.testObject.retainCount);'何回か、それを試してみますか?あなたはいつも2を得るか、またはカウントが上がるか?ちょっと不思議なことに...もしそれが上がるなら、あなたはretain/autoreleaseプロパティを持っています。 – dasblinkenlight

+1

は理由を見つけました、非原子を追加しませんでした。 – softempire

+2

retainCountは役に立たない。それを呼び出さないでください。 – bbum

答えて

6

あなたのプロパティはnonatomicと定義されていないため、保持されている/オートレリースされたオブジェクトが得られていると思います。これにあなたのプロパティ宣言を変更してみてください:

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

まさにその理由、ありがとう! – softempire

+0

ここでは、原子アクセスの関連性は表示されません。あなたは説明できますか? – Justin

+0

ああ、私は今従う。私は、原子特性のための合成されたセッターの詳細を忘れてしまった。ここに[doc](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html)があります。 – Justin

関連する問題