我有一个IASKAppSettingsViewController的子类,我当然用它来显示和处理我呈现给用户的设置的各种事件。
在此子类中,我尝试通过将此行添加到-(void)viewDidLoad
来接收设置已更改的通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(settingsChanged:) name:kIASKAppSettingChanged object:nil];
问题是从不调用方法settingsChanged。我认为还有其他一些方法可以做到这一点,或者我在这里做错了什么。这个过程在其他类中对我有用,所以我假设IASKAppSettingsViewController有一些特殊的东西阻止它工作。有人能指出我正确的方向吗?
编辑#1
通过GitHub收到来自Future Tap的消息,他让我查看示例应用程序。我做了,示例应用程序不使用IASKAppSettingsViewController的子类。我已经添加了另一个addObserver
,但也没有被调用。我确认两个addObserver
调用都在执行,所以这不是原因。
编辑#2
看来我的应用程序中出现了一些非常糟糕的事情。我有多个观察此通知的类,它们都使用相同的名称来调用方法(settingsChanged)。当我在一次addObserver
调用中单击该方法的名称时,Xcode将我带到另一个类的settingsChanged方法。这可能是导致我的一些观察者方法无法被调用的原因。
答案 0 :(得分:1)
使用Future Tap,我们发现`IASKAppSettingsViewController'在视图消失时删除了所有观察者。这导致我设置的观察者被移除,因此不被调用。代码已修复,问题解决了。