2

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

4

1 に答える 1