这样做安全吗?
#define wvar __weak __auto_type
然后是用法
wvar _self = self;
_filterMenuItem = [self addMenuItem:@"Filter" :^{
[_self.filterWithHeader toggleVisible];
}];
最佳答案
安全。关键部分是变量声明为 __weak
。只要您随后将它用作 self
的实例——而不是其他类——运行时就不会关心编译器认为它是什么类型(在这种情况下,编译器会知道 __auto_type
是正确的类型)。
还请记住,仅当 self
直接或间接保留引用它的 block 时才需要弱限定符。对于许多 block ,普通的旧 self
是安全的,不受保留周期的影响。
关于objective-c - 我可以安全地使用这个弱自自动类型的快捷方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722500/