1

我有一个 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)。当我在一次调用中按住 Command 键单击方法的名称时addObserver,Xcode 会将我带到另一个类的 settingsChanged 方法。这可能是导致我的一些观察者方法没有被调用的原因。

4

1 回答 1

1

使用 Future Tap,我们发现当视图消失时,`IASKAppSettingsViewController' 正在移除所有观察者。这导致我设置的观察者被删除,因此不会被调用。代码已修复,我的问题已解决。

于 2013-11-20T16:51:54.123 回答