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.default
为 theFlag: 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#>)
我有一个函数,其默认参数值如下:
@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.default
为 theFlag: 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#>)