0

对不起我的英语...

在“.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导致泄漏?这个功能标准怎么写?

4

1 回答 1

0

建议...

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

    也看看Inject IOS的回答

    • 属性强制访问限制(例如只读)
    • 属性强制执行内存管理策略(保留、分配)
    • 属性(很少)用作线程安全策略(原子)的一部分
    • 属性提供了透明地实现自定义 setter 和 getter 的机会。
    • 使用单一方式访问实例变量可以提高代码的可读性。
  • 命名约定:避免在变量名前加上 _ 前缀,以避免与自动生成的访问器发生冲突。或者在这个链接上由 Kelan显示和解释的合成

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

于 2013-03-26T11:12:20.380 回答