NSString *a = @"something";
NSString *b = [[NSString alloc] initWithFromat:@"something"];
NSLog(@"%d",[a retainCount]);
NSLog(@"%d",[b retainCount]);
请问上面两种赋值方式的具体区别;以及为何第一个数字非常大,新手再次真心感谢

解决方案 »

  1.   

    第一个是常量,objective-c基础书上有将
      

  2.   

    第一种应该是autorelease,第二种是要手动释放内存的
      

  3.   


    NSString是对象类型,说它是常量并不正确,而2楼的说法很正确,因为字符串实例“a”是系统完成的初始化,所以返回时带上了AutoRelease(自动释放池机制),而字符串实例“b”是手动实例化并赋初值,够其引用基数加1。
      

  4.   

    如果你要试验retain count,请不要拿NSString来做测试。
      

  5.   

    凡是没有明确写Alloc创建的对象都是Autorelease对象。
      

  6.   


    是这样的。第一种,系统会默认为autorelease,帮你释放掉它 第二种,则是自己去释放
      

  7.   

    常量字符串的引用计数值是0x7fffffff,这表示它是永不释放的.