ではMessagesViewController,
、オーバーライドされたデリゲート メソッドを使用しています。メッセージを送信するとき、didStartSending
期待どおりに呼び出されます。ただし、オプションではないパラメーターmessage
は nil です。
override func didStartSending(_ message: MSMessage, conversation: MSConversation) {
if message != nil {
logInfo("didStartSending message: \(message) conversation: \(conversation)")
} else {
logInfo("didStartSending message: \("why nil") conversation: \(conversation)")
}
}
ログ:
"didStartSending message: why nil conversation: <MSConversation: 0x17026ca00>"
po によるデバッグ:
(lldb) po message
<uninitialized>
if
また、次の行で予期される警告が表示されます。
Comparing non-optional value of type MSMessage to nil always returns true
についても同様ですdidCancelSending
。
私の理解では、定義上nilにすることはできない非オプションは、実際にはnilになることができますか。