在一个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 的 non-optional 怎么可能实际上是 nil。