では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になることができますか。