iOS-引用计数问题
我正在做一些增加参考计数的工作。下面是示例 .h文件iOS-引用计数问题,ios,iphone,sdk,Ios,Iphone,Sdk,我正在做一些增加参考计数的工作。下面是示例 .h文件 @property (nonatomic, retain) NSString *s1; .m文件 @合成s1 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. s1 = [[NSString alloc] init]; NSLo
@property (nonatomic, retain) NSString *s1;
.m文件
@合成s1
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
s1 = [[NSString alloc] init];
NSLog(@"%d",[s1 retainCount]);
[s1 retain];
NSLog(@"%d",[s1 retainCount]);
[s1 copy];
NSLog(@"%d",[s1 retainCount]);
}
当我查找引用计数时,所有的引用计数都显示为-1,对此我有点困惑,请帮助我。它打印为-1,因为您使用了错误的字符串格式 由于
retainCount
返回一个NSUIngeter
(即和无符号整数),您应该使用
NSLog(@"%lu", (unsigned long)myNSUInteger);
除此之外,值得一提的是,你应该永远不要依赖重新计算
看
此外,从:
此方法在调试内存管理问题时没有任何价值。
因为任何数量的框架对象都可能在中保留了一个对象
以保留对它的引用,同时自动释放
池可以在对象上保存任意数量的延迟释放,it
您不太可能从该方法中获得有用的信息
它打印-1,因为您使用了错误的字符串格式
由于retainCount
返回一个NSUIngeter
(即和无符号整数),您应该使用
NSLog(@"%lu", (unsigned long)myNSUInteger);
除此之外,值得一提的是,你应该永远不要依赖重新计算
看
此外,从:
此方法在调试内存管理问题时没有任何价值。
因为任何数量的框架对象都可能在中保留了一个对象
以保留对它的引用,同时自动释放
池可以在对象上保存任意数量的延迟释放,it
您不太可能从该方法中获得有用的信息
它打印-1,因为您使用了错误的字符串格式
由于retainCount
返回一个NSUIngeter
(即和无符号整数),您应该使用
NSLog(@"%lu", (unsigned long)myNSUInteger);
除此之外,值得一提的是,你应该永远不要依赖重新计算
看
此外,从:
此方法在调试内存管理问题时没有任何价值。
因为任何数量的框架对象都可能在中保留了一个对象
以保留对它的引用,同时自动释放
池可以在对象上保存任意数量的延迟释放,it
您不太可能从该方法中获得有用的信息
它打印-1,因为您使用了错误的字符串格式
由于retainCount
返回一个NSUIngeter
(即和无符号整数),您应该使用
NSLog(@"%lu", (unsigned long)myNSUInteger);
除此之外,值得一提的是,你应该永远不要依赖重新计算
看
此外,从:
此方法在调试内存管理问题时没有任何价值。
因为任何数量的框架对象都可能在中保留了一个对象
以保留对它的引用,同时自动释放
池可以在对象上保存任意数量的延迟释放,it
您不太可能从该方法中获得有用的信息
永远不要使用retainCount
-只是为了强调:永远不要使用retainCount。帮你自己一个忙,开始使用ARC。可能重复的NEVER useretainCount
-只是为了强调:NEVER use retainCount。帮你自己一个忙,开始使用ARC。可能重复的NEVER useretainCount
-只是为了强调:NEVER use retainCount。帮你自己一个忙,开始使用ARC。可能重复的NEVER useretainCount
-只是为了强调:NEVER use retainCount。帮你自己一个忙,开始使用ARC