在iphone中的NSNotification

时间:2011-01-27 13:06:18

标签: iphone nsnotificationcenter

我正在将NSSNotifcation发送到iPhone应用程序中的另一个视图控制器,但是它的观察者方法被告知两次可能的任何人如何指导我

我已使用此代码发布通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateStatusOnFacebook" object:nil userInfo:nil];

并添加观察员

[[NSNotificationCenter defaultCenter]   addObserver:self  selector:@selector(postToWall)                name:@"updateStatusOnFacebook"  object:nil];

2 个答案:

答案 0 :(得分:6)

你有两次加入观察者吗?

你在调用addObserver:selector:object:in?如果它在viewWillAppear中,则可能会多次调用它。

您的方法将被调用与添加观察者的次数相同。

试试这个:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"updateStatusOnFacebook" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(postToWall) name:@"updateStatusOnFacebook" object:nil];

另一个原因是你可能只是发送两次通知:)

答案 1 :(得分:0)

我遇到了同样的问题,并且阅读了这个问题,但只能找到一个调用来在项目的任何地方添加观察者。

在我们的例子中,观察者 被添加两次,因为该行所在的方法称为两次。

确保您单步执行代码,中断addObserver:selector:name:object调用,以确保您没有意外的额外执行路径。