"ARC项目中缺少[super dealloc]"警告

Ing*_*wig 5 xcode ios automatic-ref-counting

我已经为ARC重构了一个项目.它看起来很好,但有一个使用通知中心的对象.我在自定义dealloc方法中删除了观察者.这在非ARC项目中运行良好.它也适用于ARC,但我收到一个疯狂的警告:"方法可能错过了[super dealloc]调用." 在ARC项目中,当方法结束时,它会自动为我完成.更好的是:我不能在ARC项目中调用它!这必须是一个XCode错误,对吗?这是我的代码:

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

我总是想编写不会发出警告的代码.那个黄色感叹号有办法吗?

Nik*_*uhe 10

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

#if ! __has_feature(objc_arc)
#error "ARC is off"
#endif
Run Code Online (Sandbox Code Playgroud)

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