Итак, я использую CoreWLAN, и мне нужно было зарегистрировать некоторые события; Я начал, попробовав одно событие, CWEventType.ssidDidChange. Тогда у меня есть соответствующая функция в соответствии с Apple Docs для обработки func ssidDidChangeForWiFiInterface(withName interfaceName: String). Но когда происходит событие (я сбрасываю свой Wi-Fi, чтобы смоделировать изменение SSID), я получаю ошибку, подобную этой Thread 2: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
CWEventType.ssidDidChange
func ssidDidChangeForWiFiInterface(withName interfaceName: String)
Thread 2: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Страницы документации Apple, которые я использовал: https://developer.apple.com/documentation/corewlan/cwwificlient/1512439-startmonitoringevent https://developer.apple.com/documentation/corewlan/cweventtype https://developer.apple.com/documentation/corewlan/cweventdelegate https://developer.apple.com/documentation/corewlan/cweventdelegate/1512422-ssiddidchangeforwifiinterface
Это мой код:
import Foundation import CoreWLAN import Cocoa class WLANMonitor: CWEventDelegate { var client: CWWiFiClient = CWWiFiClient.shared(); init() { self.client.delegate = self } func registerEvents() { puts("Registering for SSID change...") do { try client.startMonitoringEvent(with: CWEventType.ssidDidChange); } catch { print("Error"); } } func ssidDidChangeForWiFiInterface(withName interfaceName: String) { print("Changed SSID") } }