2011-01-31 3 views
0

TTPhoto 프로토콜에 더 많은 필드 (예 : 위치 등)를 추가 할 예정입니까?TTPhoto에 속성 추가하기

나는 한 가지 방법은 내 자신의 프로토콜을 만드는 것이지만 그게 내보기 컨트롤러에서 물건을 많이 변경해야 할 것을 알고. 이것을 달성하는 간단한 방법이 있습니까?

답변

0

공식 프로토콜은 주로 컴파일 시간에 대한 자만심으로 사용자의 의도를보다 명확하게 나타냅니다. 그들은 비교적 최근의 발명품이며, 그 전에는 모든 프로토콜이 비공식적이었습니다. 이것은 클래스 문서의 일부 였지만 코드에서 선언되지 않았습니다. 특정 런타임에 특정 클래스가 특정 선택자에 응답하는지 여부를 쿼리 할 수있는 것처럼 특정 클래스가 특정 프로토콜에 응답하는지 여부를 쿼리하는 데 Objective-C 런타임 메서드 중 일부를 사용할 수 있다는 점에서 런타임 효과가 있지만 테스트는 없습니다 객체를 전달할 때 런타임에 발생합니다.

프로토콜은 통신을 정의하는 계약이며 동작을 지정하지 않습니다. 따라서 상속의 개념은 없습니다. 그리고 프로토콜에 포함 된 선택기의 런타임 목록이 없으므로이 아이디어는별로 도움이되지 않습니다.

원하는 추가 기능이 포함 된 추가 프로토콜을 정의하는 것이 가장 좋습니다. 두 프로토콜을 모두 구현하기 위해 새 객체를 작성하십시오. 카테고리 메소드를 사용하여 원하지 않거나 액세스 할 수없는 클래스를 확장하십시오.

새 필드를 처리하기 위해 추가 저장 용량이 필요한 경우 서브 클래 싱하는 것이 가장 안전합니다. 요즘에는 런타임에 인스턴스 변수를 실제로 추가 할 수 있지만 Objective-C 런타임에 대한 C 인터페이스로 드롭 다운해야하고이를 수행 할 기회를 찾는 데 약간의 후프 점프가 필요합니다.