添加观察者时是否需要接收NSNotification?

这是事情.. 每当我看到一个关于网络相关iphone的例子 - ipad dev时,我看到每次控制器注册自己的通知时,回调方法如下:
-(void)mymethod:(NSNotification *)notification {
    //Bla Bla
}
与按钮动作相同..总是喜欢:
- (void)actionmethod:(id)sender {
     //Bla Bla
}
我只做了一些测试,无论如何都要调用方法,无论是否有参数。 这真的有必要吗?是什么原因? 谢谢 !!!     
已邀请:
来自
NSNotificationCenter
doc:   notificationSelector   选择器,指定接收方发送notificationObserver以通知其通知发布的消息。 notificationSelector指定的方法必须只有一个参数(
NSNotification
的实例)。 [强调我的。] 您必须为选择器提供正确的签名;如果你不这样做,它可能会起作用,但它可能会在你不想要的时候停止工作。 您可能希望获得通知的原因是,您可以使用
userInfo
字典的形式传递信息,您可以在使用
notificationWithName:object:userInfo:
发布通知时指定。调用方法时可以忽略参数,但参数必须在方法签名中。 至于按钮及其动作,文档说你可以有三个签名之一*:   UIKit框架允许三种不同形式的动作选择器:   
- (void)action
  
- (void)action:(id)sender
  
- (void)action:(id)sender forEvent:(UIEvent *)event
IBAction
返回类型相当于
void
(没有返回值),除了它在头中的方法中的存在允许Interface Builder知道该方法是用作动作,以便您可以连接控件。 想要获得按钮(或其他控件)的原因与通知类似。如果您的界面中有许多按钮,其中一些按钮(例如在表格视图中)连接到同一个动作,您可能需要通过按下按钮的标识区分您所做的确切事情。 *:为了完整起见,我想提一下在Mac上并非如此;在那里,一个动作方法必须具有以下形式:
- (IBAction)action:(id)sender
。     
当我发现我可以不加任何参数调用这些方法时,我只做了那个。它适用于大多数情况,但在某些情况下显示为
NSInvalidArgumentException
。为了安全起见,最好提一下这些论点。 这是一个不使用参数导致应用程序崩溃的示例: 一个视图中的多个控制器     
根据苹果文件。 iOS中按钮的接收器可以是 - (void)动作, - (void)动作:(id)发送者。并且通知还可以具有参数NSNotification或无参数。这取决于您的需求。 例如,我需要通过通知传输UIImage,因此我将UIImage添加到NSNotification的userInfo字典中。与发件人一样,如果我需要发件人的某些属性,我将添加(id)发件人作为参数。通常,我喜欢为 - (id)sender或NSNotification添加这些参数。如果我需要来自通知或发件人的某些信息,那么我不需要更改原始方法,因为他们已经有发送者或通知对象来获取我需要的内容。 更新 必须添加NSNotification参数。参考文件链接。     

要回复问题请先登录注册