Bre*_*nan 7 c++ weak-references typeof objective-c automatic-ref-counting
我找到的代码在GitHub上REActivityViewController项目的奇数行和无法理解这一点.它似乎避免将值转换为声明它的确切类,但我不知道为什么这是必要的.我想知道它对继承是否有点重要.
任何人都可以解释为什么会这样做?
__typeof(&*self) __weak weakSelf = self;
Run Code Online (Sandbox Code Playgroud)
通过这种方式宣布,我会更清楚地说明这一点......
id __weak weakSelf = self;
Run Code Online (Sandbox Code Playgroud)
然后在块内我可以重新声明它作为一个强大的参考.
REPocketActivity* __strong strongSelf = (REPocketActivity*)weakSelf;
Run Code Online (Sandbox Code Playgroud)
然后我会strongSelf在块内使用.当它超出范围时,它会安全地丢弃强引用.
__typeof(self)有利于可移植性,因为它没有绑定到特定的类,尽管如此,这个&*技巧看起来绝对是多余的。据我所知, in C,因此Objective-C,&*ptr完全等同于ptr。
然而,这在其他类 C 语言(例如 )中可能并不成立C++,因为运算符可以重载并且语义可能不像看起来那么简单。事实上,我已经&*在C++应用程序中看到了这一点,尤其是在处理迭代器时。我的猜测是作者有C++背景,这就是他插入冗余结构的原因。
不管怎样,我可能是错的,我很想听到更复杂的解释,如果有的话。
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |