您的位置:首页 > 大数据 > 人工智能

关于NSString,retainCount为-1

2013-09-17 18:29 411 查看
/*
字符串常量,因为one
为字符串常量,系统不会回收,也不会对其作引用计数,即使我们对test1
做任何retain或release。
*/

NSString *test1 = [[NSString alloc] initWithString:@"one"];

NSLog(@"test1 .......%ld",(unsigned long)[test1 retainCount]);


/*
使用stringWithFormat创建NSString为变量,系统会引用计数
*/
NSString *test2 = [[NSString alloc] initWithFormat:@"one%d",1];

NSLog(@"test2 .......%ld", (unsigned long)[test2 retainCount]);


/*
stringWithString
这个方法比较特别:它的retainCount取决于后面跟的string对象.
运行完你会发现test4的计数器为2,这里很好理解,这个方法生成的只是一个对另一个对象的引用。一个对象实例,一次的stringWithString,一次stringWithFormat它的retainCount为2
*/
NSString *test3 = [NSString stringWithString:@"one"];
NSString *test4 = [NSString stringWithString:[NSString stringWithFormat:@"test,%d",1]];

NSLog(@"test3 .......%ld",(unsigned long)[test3 retainCount]);
NSLog(@"test4 .......%ld",(unsigned long)[test4 retainCount]);


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: