In einem MessagesViewController,
verwenden wir die überschriebenen Delegate-Methoden. Beim Senden einer Nachricht wird didStartSending
wie erwartet aufgerufen. Die nicht-optionalen Parameter message
ist aber gleich Null:Kann ein nicht-optionaler Typ Null sein?
override func didStartSending(_ message: MSMessage, conversation: MSConversation) {
if message != nil {
logInfo("didStartSending message: \(message) conversation: \(conversation)")
} else {
logInfo("didStartSending message: \("why nil") conversation: \(conversation)")
}
}
Log:
"didStartSending message: why nil conversation: <MSConversation: 0x17026ca00>"
Debugging mit po:
(lldb) po message
<uninitialized>
Auch wir erhalten die erwartete Warnung auf der if
Linie:
Comparing non-optional value of type MSMessage to nil always returns true
Das gleiche gilt für didCancelSending
.
Wie kann ein nicht-optional, die per definitionem in meinem Verständnis nicht null sein kann, tatsächlich Null sein.
Also das ist ein Apple Bug, wie ich deine Antwort verstehe, oder? – shallowThought