接收到的通知的方法处理程序崩溃了应用程序。 :(

时间:2015-07-07 10:47:45

标签: ios swift ios8 nsnotificationcenter nsnotifications

我正在处理外部附件框架,这是我注册notofication的代码..

override func viewDidLoad() {
    super.viewDidLoad()

    EAAccessoryManager.sharedAccessoryManager().registerForLocalNotifications()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify", name: EAAccessoryDidConnectNotification, object: nil)
   }

这是我的方法处理功能......

func accessoryDidConnectNotify(notification: NSNotification){


        let alert : UIAlertController = UIAlertController(title: "Alert", message: "MFi Accessory Connected", preferredStyle:UIAlertControllerStyle.Alert)

        alert.addAction(UIAlertAction(title: "ok", style: UIAlertActionStyle.Default, handler: { (action) -> Void in

        }))

        self.presentViewController(alert, animated: true, completion: nil)

我的问题是如果我在accessoryDidConnectNotify函数中没有给出任何参数,当我插入MFi附件时,应用程序可以正常运行警报视图。

(i.e)  func accessoryDidConnectNotify(){   // works fine (with no arguments)
                         } 

但是我需要在我的accessoryDidConnectNotify函数中使用NSNotification对象来获取附件的名称 ...但是如果我添加NSNotification对象,则在插入MFi附件时应用程序崩溃...

(i.e)   func accessoryDidConnectNotify(notification: NSNotification){
}  // crashes app (with arguments)

如果有人也遇到了问题......请分享

1 个答案:

答案 0 :(得分:4)

如果您的方法没有任何参数,那么您可以这样调用它:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify", name: EAAccessoryDidConnectNotification, object: nil)

使用"accessoryDidConnectNotify"

这样您就可以使用以下方法:

func accessoryDidConnectNotify(){   // works fine (with no arguments)

     //Your code
} 

但是如果你的方法有参数,你必须这样调用它:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "accessoryDidConnectNotify:", name: EAAccessoryDidConnectNotification, object: nil)

使用此"accessoryDidConnectNotify:"。在这里你必须添加:

现在您可以通过这种方式调用您的方法:

func accessoryDidConnectNotify(notification: NSNotification){

    //Your code
}