作为Objective-C的新手,我发现自己常常在一个返回NSString
的方法应该返回一个空字符串,还是返回一个nil
之间徘徊,我不知道确定标准做法是什么,但在Objective-C中出现的大部分语言都是围绕正确处理nils而构建的。
例如,我有一个返回guid的NSManagedObject
类别方法(如果托管对象有一个guid字段)。
-(NSString*)guidValue {
if ([self respondsToSelector:@selector(guid)]) {
return [self guid];
}
return nil;
}
因此,在我的最终回复声明中,我应该执行Objective-C标准和return nil;
还是只是一个任意的主观决定,return @"";
从标准的角度来看同样有效。
答案 0 :(得分:2)
nil
是更好的选择,因为它表明没有价值。空字符串可以是有效的返回值(可能不是在这种特定情况下,但在其他情况下)。
这实际上取决于您是否需要区分无值(nil
)和实际值(空字符串)。
通过返回nil
来表示"没有值",调用代码可以做出适当的决定:
NSString *guid = [someObject guidValue];
if (guid) {
// use the guid as needed
} else {
// uh-oh - no guid - do something else as needed
}
答案 1 :(得分:1)
答案实际上取决于您如何设计应用程序,以及如何使用此方法。
作为一般规则,nil
比空字符串更符合逻辑。
例如,假设您正在验证guid,如:
if ([managedObject guid]) {
NSLog(@"success");
}
基于nil的设计可以更好地工作。
答案 2 :(得分:1)
答案取决于意图。空字符串与nil
不同,因为nil
表示根本没有字符串。
尽管在Objective-C中内置了对nil
的处理,但您可以使用nil
作为字段或属性的额外状态,指示"未知值"。