首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective-c - NSMutableString setString vs NSString

Objective-c - NSMutableString setString vs NSString
EN

Stack Overflow用户
提问于 2013-05-30 21:46:37
回答 1查看 1.3K关注 0票数 2

在setter中,按如下方式保留和释放NSString是更好的做法:

代码语言:javascript
复制
-(void) setName:(NSString *)newName
{
    if(newName != nil)
    {
         [newName retain]:
         [m_Name release];
         m_Name = newName; //Where m_Name is a NSString *
    }
    //I'm not sure for this code, I have difficulties understanding memory-management in ObjC
}

或者通过NSMutableString更改该值:

代码语言:javascript
复制
-(void) setName:(NSString *)newName
{
    if(newName != nil)
        [m_Name setString:newName]; //Where m_Name is a NSMutableString *
}

如果其中任何一种或两种方法都不正确,请让我知道。

EN

回答 1

Stack Overflow用户

发布于 2013-05-30 22:00:45

第一种解决方案更好。这就是retain属性的处理方式。您保留新值,然后释放旧值。另外,如果要处理的nil情况不是很重要,您可以依赖由@synthesize生成的默认实现。

对于第二种解决方案,这真的是没有必要的,而且有点违反惯例。此外,在此解决方案中,您必须在为m_name分配任何字符串之前对其进行初始化。你可以在init中做到这一点。

代码语言:javascript
复制
- (void) init {
    if (self = [super init]) {
        m_name = [[NSMutableString alloc] init];
    }
}

结论:优先解决方案肯定更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16837983

复制
相关文章

相似问题

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