你好家伙我有一个关于以下问题的问题。保留使用(保留)财产时的行为
我有两个对象: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