objective-c - 我可以安全地使用这个弱自自动类型的快捷方式吗?

标签 objective-c automatic-ref-counting weak-references

这样做安全吗?

#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/

相关文章:

c++ - 在基类中调用 shared_from_this() 时的 bad_weak_ptr

java - Java 中一个对象与另一个对象的弱关联?

ios - 获取 Xcode 构建时间

ios - 我的位置和目的地之间没有路线

objective-c - 启用和禁用通用窗口菜单命令

ios - 检测 Sprite cocos2d 中的特定触摸位置

cocoa - 使用 ARC 在 Lion 上查看基于 NSTableView EXC_BAD_ACCESS

Java WeakHashMap 清理

ios - 释放 iOS 中 ARC 下的 NSMutableDictionary 内存

iphone - 我该如何修复此错误 : "ARC forbids explicit message send of ' release' in Xcode"