Swift:通过NotificationCenter的默认功能参数值

问题描述 投票:0回答:1

我有一个默认参数值的函数,如下所示:

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

}

通过通知中心调用此功能

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

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

我假设Flag的默认值设置为“false”,它在我的大多数设备上都能正常工作。但是,我发现在32位设备上Flag已设置为“true”。

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

我正在测试Swift 4.1,Xcode 9.4.1

ios swift nsnotificationcenter
1个回答
0
投票

正确的方法是

@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#>)
© www.soinside.com 2019 - 2024. All rights reserved.