代码之家  ›  专栏  ›  技术社区  ›  Jay Haase

设置NSString属性的默认值

  •  0
  • Jay Haase  · 技术社区  · 14 年前

    我正在尝试确定为NSString属性设置默认值的推荐方法。

    我知道在类的in it和dealloc方法中使用访问器方法是不安全的。我经常有字符串常量,我想分配默认值。推荐的方法是什么(考虑到iVar将以dealloc方法发布)?

    例如,我了解以下情况是不安全的:

    @property (nonatomic, copy) NSString *identifier;
    ....
    
    - (id) init
    { 
        self = [super initWithLayer:displayLayer];
    
        if (self != nil)
        {
            self.identifier = @"fireSpell01";
        }
    
        return self;
    }
    

    是否可以,或建议执行以下操作:

    identifier = [@"fireSpell01" retain];
    

    或者我必须这样做:

    identifier = [[NSString stringWithString:@"fireSpell01"] retain];
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Adam Rosenfield    14 年前

    就这样做:

    identifier = @"fireSpell01";
    

    没必要 retain 绳子。字符串常量存在于程序的生命周期中,不需要被保留或释放。做 [[NSString stringWithString:@"fireSpell01"] retain] 只是创建了一个不必要的副本,没有意义。

    要避免的是在 init dealloc 方法。因为setter可能有依赖于某些状态值的副作用,所以您不想在部分构造/部分销毁的对象上调用它们。最好直接分配给ivar,在 初始 .

    推荐文章