2012-12-19 4 views
10

가능한 중복은 :
Conforming protocol privately프로토콜을 개인적으로 구현 하시겠습니까?

광산의 클래스는 생성하는 NSXMLParser 객체에 대리인으로 자신을 등록하려고합니다. 그러나 NSXMLParser 객체가 클래스 내에서만 사용되는 전용 변수이기 때문에 NSXMLParserDelegate 프로토콜을 구현한다고 공개적으로 공개하길 바란다고 생각하지 않습니다.

프로토콜을 공개하는 것이 옳은가요? 그렇다면 클래스를 그렇게 공개하지 않고 프로토콜을 어떻게 구현합니까?

답변

14

시도하여하는 .m 파일에 이러는 :

@interface MyClass (Private) <NSXMLParser> 
@end 

특정 카테고리 이름 (Private)는 중요하지 않습니다 - 사실 당신이 빈}을 사용할 수 있습니다 (아래 참조) -하지만 난 생각 이 작업을 수행하려면 필수 메서드를 구현하고 최소한 해당 파일에서 클래스가 프로토콜을 구현하는지 컴파일러에 알리도록 요구해야합니다.

문제가 해결되지 않으면, 단순히 .H 파일에서 <NSXMLParser>을 제거하려고하고, 필요한 경우 파서의 대리자를 설정할 때, id<NSXMLParser>self 캐스팅.

+0

이 게시물을 작성한 후에 다른 사용자가 이미 해결책을 찾았 음을 '관련'에서 확인했습니다. .m 파일에서 익명 카테고리를 만드는 것이 좋습니다. '@interface MyClass() '. 'Private'을 삭제하거나 익명의 카테고리가 작동한다고 언급하면, 당신의 게시물을 대답으로 받아 들일 것입니다. :) +1의 아이디어에 대해서는 id '에 관계없이 : –

+0

나는 메모를 추가했습니다. 왜 그 대답에 대한 링크를 게시하지 않습니까? – paulmelnikow

+0

http://stackoverflow.com/questions/3813316/conforming-protocol-privately?rq=1 내 게시물을 중복으로 표시해야하는지 궁금합니다. 어떻게해야할지 모르겠다. –

관련 문제