关于NSObject版本

时间:2013-03-26 09:51:17

标签: ios nsstring

对不起我的英文......

“.h”文件中的

NSString *_name;
“.m”文件中的

-(id)init{

.....

_name = [[NSString alloc] initWithString:@"Hadrian"];

.....

}

和一个函数用来改变_name的值,如下所示:

-(void) changeName:(NSString *)name{

    //No 1:

    _name = [name copy];

    //No 2:

    if(_name) [_name release];

    _name = [name copy];

}

没有1导致泄漏?怎么写这个功能标准?

1 个答案:

答案 0 :(得分:0)

<强>建议...

  • @property和@synthesize:如果使用@property / @synthesize,则getter / setter由 他们。你不需要处理它。 (使用功能而不是长 代码)

    还可以从Inject IOS

    回答
      
        
    • 属性强制执行访问限制(例如readonly)
    •   
    • 属性强制执行内存管理策略(保留,分配)
    •   
    • 属性(很少)用作线程安全策略(原子)的一部分
    •   
    • 属性提供了透明地实现自定义setter和getter的机会。
    •   
    • 使用单一方法访问实例变量可提高代码可读性。
    •   
  • 命名约定:避免_前缀变量名称以避免与自动生成的访问者冲突。或者合成为 在link by Kelan

  • 上显示和解释
  • 泄漏:您在分配对象或创建副本时拥有该对象。这意味着您将获得保留计数为1的对象(不是 自动释放)。你有责任,你应该在你发布时释放它 已使用该对象。

相关问题