str之所以打印出来是-1,是因为它的retainCount=NSUIntegerMax,对NSString而言,只有当你调用format,或mutable关键字的时候,才会重新分配内存,如果你是调用这个方法"initWithFormat:",这其实是mutable操作,它内部会复制string然后分配内存,此时才会retainCount = 1,你如果要测试retainCount,不要用NSString来测试,你不了解的话会有很多意外的问题发生
调试欢乐多
NSString *str = [[NSString alloc]init];
等效 NSString *str = @"";
@"" 属于静态区常量 ,retainCount 为 无效的值 ,也就是 常驻内存的意思NSLog(@"%zi",(unsigned long)[arry retainCount]);//计数为2 ,这个引用计数 为二 ,你应该用的 是 ARC 吧 ,这个我就不是很 清楚了 ,如果 不用 ARC 的话 ,应该 是 1
NSArray *arry1 = [[NSArray alloc]init];
NSArray *arry2 = [[NSArray alloc]init];它们三个是同一个对象