在NSNotificationCenter上放置一个断点

时间:2011-01-18 11:56:14

标签: iphone objective-c nsnotificationcenter

有没有办法打破NSNotificationCenter发布带有特定名称的Note?我有一个课程,由于某种原因没有得到预期的注意......

编辑以澄清:

我已经为MPMoviePlayerPlaybackDidFinishNotification添加了一个观察者,但由于某种原因,似乎未按预期发送通知。这里的一个正常错误是我的对象由于某种原因取消订阅自己作为观察者(即使我发现我的代码看起来有效)。所以,我的目的是是否有可能打破NSNotificationCenter实际传递某种类型的NotificationName,在这种情况下MPMoviePlayerPlaybackDidFinishNotification ...

2 个答案:

答案 0 :(得分:3)

使用屏幕截图中显示的框在Xcode中添加名称为“ - [NSNotificationCenter postNotification:]”的断点。请记住,这将停止发布每个通知,因此您可能希望让调试器记录参数和autocontinue。

答案 1 :(得分:0)

您可以在为特定事件调用的方法中添加断点。 e.g。

NSNotificationCenter * nc = [NSNotificationCenter defaultCenter];

[nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name: UIKeyboardWillHideNotification object:nil];

这里你可以在keyboardWillShow和keyboardWillHide方法中使用断点来调用键盘事件的时间。

因此您需要指定有效的事件名称和有效的对象名称。

如果将textfield作为对象,则可以像这样使用

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

[notificationCenter addObserver:self
                       selector:@selector (handle_TextFieldTextChanged:)
                           name:UITextFieldTextDidChangeNotification
                         object:self.lockTextField];

所以我认为你需要以正确的方式添加通知。