MessagesViewController,
에서 우리는 재정의 된 대리자 메서드를 사용하고 있습니다. 메시지를 보낼 때 didStartSending
이 예상대로 호출됩니다. 비 선택적 매개 변수 message
하지만 무기 호입니다 :비 선택적 유형을 없어도 될 수 있습니까?
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>"
디버깅 : 또한
(lldb) po message
<uninitialized>
우리 if
라인에 기대 경고를 얻을 :
Comparing non-optional value of type MSMessage to nil always returns true
didCancelSending
도 마찬가지입니다.
내 이해에서 정의로 제로가 될 수없는 선택 사항이 실제로는 무효가 될 수 있습니다.
이것은 Apple 버그입니다. 귀하의 답변을 어떻게 이해하고 있습니까? – shallowThought