我用过[anArray retainCount]
获取数组的保留计数..(我知道这不应该使用,但我只是为了学习保留概念而使用)
以下是我的代码。
NSString *str = [[NSString alloc] initWithFormat:@"a,b,c,d"];
NSArray *anArray =[[NSArray alloc]init];
NSLog(@"Retain count: %i", [anArray retainCount]);
anArray=[str componentsSeparatedByString:@","];
NSLog(@"Retain count: %i", [anArray retainCount]);
output
Retain count: 2
Retain count: 1
我认为应该是相反的,但是......
请帮自己一个忙don't看着retainCount
尝试了解内存管理规则是如何工作的。而是参考友好的苹果内存管理指南.
在你的例子中:
NSArray *anArray =[[NSArray alloc]init];
您已经分配了“anArray”(通过调用alloc
),所以你有责任打电话release
.
anArray=[str componentsSeparatedByString:@","];
现在,您已经获得了一个新对象(泄漏了原始对象,正如sead所说)。这次,您不拥有该对象(因为componentsSeparatedByString
不具有alloc
or copy
以它的名字命名),所以你不能释放它。
不用担心保留计数是什么;倾向于你自己的编织并释放你应该拥有的物品,并且不要释放你不拥有的物品。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)