Closed wuzhenli closed 3 years ago
!!self.themeProvider == self.themeProvider != nil 不觉得!!更简洁么 😄
直接写成下面这样岂不更简洁。不写成下面这样是有其他考虑吗?
- (BOOL)_isDynamic {
return self.themeProvider;
}
严格来说将id类型当作BOOL返回值是有问题的,只是在objective-c里,编译器会默认将
- (BOOL)_isDynamic {
return self.themeProvider;
}
转为
- (BOOL)_isDynamic {
return (BOOL)self.themeProvider;
}
而实际上将一个id对象转为BOOL,是将它的指针转为BOOL,当转换时,它将截断并且只占用指针的8个最低有效位并使其成为一个BOOL。如果这些位全部都为零,则相当于NO,反之为YES。
当然 self.themeProvider
or (BOOL) self.themeProvider
or !! self.themeProvider
对代码正确性来说没有缺别,只是代码风格和严谨性的问题。
明白了,多谢解答 👍
https://github.com/Tencent/QMUI_iOS/blob/0f4a3eb3365c2a43ca175e37bf2cff6703d1b074/QMUIKit/QMUIComponents/QMUITheme/UIColor%2BQMUITheme.m#L155
这里为什么要写2个
!
呢?