こんにちは私は次の問題に関する質問があります。プロパティ(保持)プロパティを使用するときの動作を保持
私は2つのオブジェクト:aClassとbClassを持っています。 aClassには、retainプロパティを使用してbClassが含まれます。 bClassをインスタンス化した後(私はここでミスの問題を解決したいので、私はここで便利なアロケータを使いません)、aClassのsetPropertyを使ってbClassをaClassに割り当てます。
プロセス全体を通して、参照を要求してaClassのプロパティを確認することによって、bClassのretainCountをチェックします。
私が理解している限り、Objective Cのメモリ管理は、プロパティと参照の間でオブジェクトの所有権を共有しているため、前述の保持カウントは同じにする必要があります。
私にはメモリ管理を理解する上で大きな問題があるようです。多分誰かが私の間違いを私に説明することができます。 Thxを事前に入力してください。
Header of ClassA
@property (retain)ClassB *myProperty;
Source of ClassA
@implementation ClassA
-(id)init {
self = [super init];
if (self) {
ClassB * bClass = [[ClassB alloc] init];
NSLog(@"Temporary bClass retain count = %d", [bClass retainCount]);
self.myProperty = bClass;
NSLog(@"retain count after giving ownership to ClassA = %d", [bClass retainCount]);
[bClass release];
NSLog(@"retain count of bClass after release = %d", [bClass retainCount]);
NSLog(@"retain count of myProperty of ClassA = %d", [self.myProperty retainCount]);
}
return self;
}
出力は次のとおり
一時bClassカウント= 1
= 2
A級に所有権を与えた後カウントを保持が解除= 1
後bClassのカウントを保持する保持しますClassA = 2のmyPropertyの保持カウント
'-retainCount'は使用しないでください。これは有用ではありません:http://stackoverflow.com/questions/4636146/when-to-use-retaincount – newacct