首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于NSObject发布

关于NSObject发布
EN

Stack Overflow用户
提问于 2013-03-26 09:51:17
回答 1查看 136关注 0票数 0

抱歉我的英语..。

在".h“文件

代码语言:javascript
复制
NSString *_name;

在".m“文件

代码语言:javascript
复制
-(id)init{

.....

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

.....

}

以及一个用于更改_name值的函数,如下所示:

代码语言:javascript
复制
-(void) changeName:(NSString *)name{

    //No 1:

    _name = [name copy];

    //No 2:

    if(_name) [_name release];

    _name = [name copy];

}

没人会泄密?如何编写这个功能标准?

EN

回答 1

Stack Overflow用户

发布于 2013-03-26 11:12:20

Suggestions...

  • @property和@合成器:如果使用“/@合成”,则getter/getter由它们处理。你不需要处理它。(使用特性而不是长代码) 也看Inject IOS的答案

代码语言:javascript
复制
- Properties enforce access restrictions (such as readonly)
- Properties enforce memory management policy (retain, assign)
- Properties are (rarely) used as part of a thread safety strategy    (atomic)
- Properties provide the opportunity to transparently implement custom    setters and getters.
- Having a single way to access instance variables increases code    readability.
  • 命名约定:以变量名为前缀的避免与自动生成的访问器发生冲突。或者像在这个link by Kelan上所展示和解释的那样进行合成
  • 泄漏:当分配对象或创建副本时,为您拥有该对象。这意味着对象的保留计数为1(不是自动释放的)。你有责任,当你使用了那个对象时,你应该释放它。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15633945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档