- (BOOL)getBoolValueForKey:(NSString *)key;
如果该方法的调用者传递了一个不存在的键,那么我应该抛出一个自定义的NSException来表示该键不存在(但是在Objective C中不推荐抛出异常),还是像下面所示的添加NSError参数到该方法中?- (BOOL)getBoolValueForKey:(NSString *)key error:(NSError **)error;
如果我使用NSError,我将不得不返回“NO”,这会让人误解,因为“NO”可能是任何有效键的有效值。
NSNumber
封装器返回值(即返回@YES
或@NO
),如果没有找到则返回nil
。调用者随后可以检查该值是否为@YES
或@NO
。这可能不完全符合您的设计,但在 Objective-C 中,这是一种高效的可选BOOL
实现方式(除了分配一个BOOL *
,但那太过浪费)。 - Itai Ferber