2014-07-16 2 views
2

Swift에서 UITableView을 구현하고 Objective-C와 비교했습니다.Swift : 메서드에서 옵션 값 반환 및 전달

스위프트에서 언 패키징 옵션을 반환합니다. 내가 선택 사항이 아닌 nil을 반환한다는 것을 알고 있다면 왜 리턴 타입이 선택적인가? 나는 unwapped 옵션으로 uitableview를 전달할 것이다. 동일한 지혜가 적용됩니다.

내가 선택을 반환하고 나는 값 또는 전무을 반환했는지 모르겠 말을 물음표를 사용하고 있다면 그것은 의미가 있습니다 ..하지만이 특정한 경우

답변

4

을 이해하지 않는다 Objective-C API와의 인터페이스 문제 일뿐입니다. 모든 객체 참조 일 수 있으며 Swift는 그 사실을 표현해야하므로 Optional이 필요합니다. 그러나 암시 적으로 언 래핑 된 옵션을 사용하여 Swift는 선택 사항이라는 사실에 대한 우려를 해소합니다. 옵션으로 감싸는 것으로 취급 할 수 있습니다. 스위프트가 다리를 건너는 것에 대해 걱정하게하십시오.

는의가 별도로 분리 된 경우를 보자

반환 값 여기 당신 패스 전무

, 때문에 어떤 객체 참조는 nil이 될 수 있습니다. 따라서 리턴 값은 이며, 랩핑되지 않은 옵션으로이 입력됩니다. 실제로는 테이블 뷰 셀 객체 만 전달하면됩니다.

? 수신 테이블보기 어떤 객체 참조가 nil이 될 수 있지만, 사실은 당신이되지 않습니다 알고 때문에

그것은 전무 수 있습니다. 암시 적으로 풀어지지 않으므로 실제로는 테이블 뷰로 사용할 수 있습니다.

+0

및 선택적 매개 변수의 기본값으로 클로저를 사용할 수 있습니다. http://stackoverflow.com/a/27513392/2237853 – izzy

1

이 방법을 구현하지 않고 대신 Objective-C에 정의 된 클래스에서이 메서드를 호출한다고 가정 해보십시오. Objective-C 클래스는 nil을 반환 할 수 있으므로 프로토콜 정의에 반영해야합니다. Swift에서 메서드가 결코 반환되지 않을 것이라고 보장 할 수는 있지만 프로토콜을 준수하면서 다른 반환 형식을 사용할 수는 없습니다.

Swift의 컨텍스트에서 자신 만의 프로토콜을 작성하는 경우 추가 안전을 위해 선택 사항을 확실히 삭제할 수 있습니다.