나는 Stanford's CS193P course에서 배우고 있습니다. 수업에서 폴은 데모 프로젝트 인 "계산기"를 가지고 있는데 여기에서 그는 재산의 유형으로 id
을 사용합니다. 그는 특정 클래스를 사용하지 않으려합니다. 새 클래스를 만들고 싶지 않고 문서를 작성할 필요가 없기 때문입니다. 심지어 업데이트 될 때에도 클래스를 다시 디자인 할 필요가 없습니다. id
은 이러한 모든 문제를 해결할 수 있습니다.공개 API에서 반환 유형 또는 매개 변수 유형으로 'id'를 사용하는 데는 충분한 이유가 있습니까?
정말 좋은 방법입니까? id
은 속성의 반환 유형이며 다른 메서드의 매개 변수 유형으로 사용됩니다. 호출자는 id
이 무엇인지, 그리고 올바른 개체를 제공하는 방법을 어떻게 알 수 있습니까? 코드 주석을 읽음으로써?
일반적으로 공용 API에서 반환 유형 또는 매개 변수 유형으로 id
을 사용하는 데는 이유가 있습니까? (init
및 공장 방법을 제외하고도 사람들을 위해, instancetype
권장하지만.)
참고 [그 이름이 방법에 대한 중복은'init' 시작 (http://clang.llvm.org/docs/LanguageExtensions.html#related-result-types). –
정말 모호한 'id'를 실행하는 가장 일반적인 장소는 JSON에서 생성 한 NSArray 또는 NSDictionary와 같은 요소에 액세스 할 때입니다. 그러한 경우 런타임에 명시 적으로 테스트하여 어떤 유형이 존재하는지 판별해야 할 수 있습니다. –