Swift: значение параметра функции по умолчанию через NotificationCenter - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть функция со значением параметра по умолчанию, например:

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

}

Эта функция вызывается через центр уведомлений

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

Когда отправлено MyNotificationName, myFunc вызывается через центр уведомлений.

Я предположил, что значение по умолчанию theFlag установлено в значение "false", и оно работает, как я ожидал, на большинстве устройств.Однако я обнаружил, что theFlag установлен на «истина» на 32-битных устройствах.

Интересно, это был неправильный способ вызова функции со значением по умолчанию через центр уведомлений.Есть ли какой-нибудь официальный способ сделать это?

Я тестирую на Swift 4.1, Xcode 9.4.1

1 Ответ

0 голосов
/ 11 сентября 2018

Правильный путь:

@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#>)
...