对不起我的英文......
“.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导致泄漏?怎么写这个功能标准?
答案 0 :(得分:0)
<强>建议... 强>
@property和@synthesize:如果使用@property / @synthesize,则getter / setter由 他们。你不需要处理它。 (使用功能而不是长 代码)
还可以从Inject IOS
回答
- 属性强制执行访问限制(例如readonly)
- 属性强制执行内存管理策略(保留,分配)
- 属性(很少)用作线程安全策略(原子)的一部分
- 属性提供了透明地实现自定义setter和getter的机会。
- 使用单一方法访问实例变量可提高代码可读性。
命名约定:避免_前缀变量名称以避免与自动生成的访问者冲突。或者合成为 在link by Kelan
泄漏:您在分配对象或创建副本时拥有该对象。这意味着您将获得保留计数为1的对象(不是 自动释放)。你有责任,你应该在你发布时释放它 已使用该对象。