Swift: NotificationCenter 默认函数参数值

Swift: Default function parameter value via NotificationCenter

我有一个函数,其默认参数值如下:

@objc func myFunc(theFlag: Bool = false) {

}

这个函数是通过通知中心调用的

NotificationCenter.default.addObserver(self, selector: #selector(myFunc), name: MyNotificationName, object: nil)

发布 MyNotificationName 时,通过通知中心调用 myFunc

我假设 theFlag 的默认值设置为 "false" 并且它在大多数设备上都按我预期的方式工作。 但是,我发现 theFlag 在 32 位设备上设置为 "true"。

我想知道这是否不是通过通知中心调用具有默认值的函数的正确方法。有什么官方方式可以做到这一点吗?

我正在 Swift 4.1、Xcode 9.4.1

上进行测试

正确的做法是

@objc func myFunc(_ notification:Notification) // OR NSNotification also

不要期望 NotificationCenter.defaulttheFlag: Bool = false 设置一个值,

NotificationCenter.default.addObserver(self, selector: #selector(myFunc), name: MyNotificationName, object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(myFunc(_:)), name: MyNotificationName, object: nil)

//

如果你想发送一个值,然后将它插入 object / userInfo

NotificationCenter.default.post(name:MyNotificationName, object:<#Here#>, userInfo:<#OrHere#>)