你好傢伙我有一個關於以下問題的問題。保留使用(保留)財產時的行爲
我有兩個對象:aClass和bClass。 aClass應通過使用retain屬性來包含bClass。 在instanciating bClass之後(我在這裏沒有使用便捷分配器,因爲我想解決我在這裏的錯誤理解問題),通過使用aClass的setProperty將bClass分配給aClass。
在整個過程中,我通過詢問引用並詢問aClass的屬性來檢查bClass的retainCount。
據我瞭解,目標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
給予所有權ClassA的= 2
釋放後保留bClass的計數後保留計數= 1
保留ClassA的myProperty的數量= 2
不要使用-retainCount這是沒有用的。http://stackoverflow.com/questions/4636146/when-to-use-retaincount – newacct 2012-07-06 01:20:34