ARC 项目中出现“Missing [super dealloc]”警告

2024-05-27

我已经将一个项目重构为 ARC。看起来不错,但是有一个对象使用通知中心。我在自定义的 dealloc 方法中删除了观察者。这在非 ARC 项目中效果很好。它也适用于 ARC,但我收到一个疯狂的警告:“方法可能缺少 [super dealloc] 调用。”在 ARC 项目中,当方法结束时,它会自动为我完成。更好的是:我不能在 ARC 项目中调用它!这一定是 XCode 的 bug,对吧?这是我的代码:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    // [super dealloc]; will be called automatically
}

我总是想编写不会引发警告的代码。有没有办法绕过那个黄色感叹号?


将以下行放入您的 dealloc 方法中,以确保它是在启用 ARC 的情况下编译的:

#if ! __has_feature(objc_arc)
#error "ARC is off"
#endif

如果您在构建时遇到编译器错误,则可以确定 ARC 已关闭,并且必须查找原因。它可能位于目标中的每个文件构建设置中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARC 项目中出现“Missing [super dealloc]”警告 的相关文章

随机推荐