5

在处理以前的开发人员留给我的项目代码时,我遇到了以下构造

-(NSString *)StringCheckWithString:(NSString *)string{

    NSString *string2 = [NSString stringWithFormat:@"%@", string];

    if([string2 length] == 0){
        return @"none";
    }
    else {
        return string2;
    }
}

谁能解释你为什么要这样做,对我来说似乎过度设计了,我不明白为什么这样做(为了清楚起见,我不明白为什么字符串是这样格式化的,我理解长度检查)

4

1 回答 1

8

传入的参数可以是字符串的任何子类,包括 NSMutableString。此代码创建它的不可变副本。这意味着您可以存储返回的字符串,而不必担心其他人会修改它。

这样做的更好方法是:

NSString *string2 = [string copy];

根据NSCopying 协议参考

如果考虑“不可变与可变”适用于接收对象,则返回的副本是不可变的。

于 2013-07-23T16:05:14.923 回答