我有一个具有默认参数值的函数,如下所示:
@objc func myFunc(theFlag: Bool = false) {
}
通过通知中心调用此功能
NotificationCenter.default.addObserver(self, selector: #selector(myFunc), name: MyNotificationName, object: nil)
发布MyNotificationName时,将通过通知中心调用 myFunc 。
我假设 theFlag 的默认值设置为“ false”,并且它在大多数设备上都能正常工作。 但是,我发现在32位设备上 theFlag 设置为“ true”。
我想知道这是否不是通过通知中心调用具有默认值的函数的正确方法。有官方的方式吗?
我正在Swift 4.1,Xcode 9.4.1上进行测试
答案 0 :(得分:0)
正确的方法是
@objc func myFunc(_ notification:Notification) // OR NSNotification also
不要期望NotificationCenter.default
为theFlag: Bool = false
设置一个值,
NotificationCenter.default.addObserver(self, selector: #selector(myFunc), name: MyNotificationName, object: nil)
OR
NotificationCenter.default.addObserver(self, selector: #selector(myFunc(_:)), name: MyNotificationName, object: nil)
//
如果要发送值,则将其插入object
/ userInfo
NotificationCenter.default.post(name:MyNotificationName, object:<#Here#>, userInfo:<#OrHere#>)