【发布时间】:2011-10-04 01:58:05
【问题描述】:
我正在查看另一个开发人员提交给项目的差异,他们有很多代码可以做到!!<some BOOL value>。事实上,这似乎是他们实现布尔 getter 和 setter 的标准模式。他们已经实现了如下代码:
- (BOOL) hasId {
return !!hasId_;
}
- (void) setHasId:(BOOL) value {
hasId_ = !!value;
}
我以前从未见过这种模式,我想知道使用它是否有任何好处。双重否定有什么用吗?
【问题讨论】:
-
我见过的唯一一次是一个没有直接转换为 bool 方法的类,所以他们不能做
if(myInstance),但它确实使一元 @987654324 过载@运营商,所以他们会做if(!!myInstance)。但在你的情况下,我不知道。 -
看起来是 ProtoBuf 生成的源代码。
标签: objective-c boolean design-patterns