2010-02-08 2 views
4

프로토콜에 해당하는 대리인의지도를 사전 저장소에 저장하려고합니다. 프로토콜을 나타내는 일관된 키가 필요합니다.프로토콜 개체의 고유 식별자를 얻는 방법

는 예를 들어, 다음은 나에게 프로토콜 개체

Protocol * one = @protocol(SomeProtocolDefinedEarlier); 

을 제공합니다 그리고 그것은 [one hash]에 응답하지만 해시가 동일한 프로토콜에 대한 프로토콜 개체를 얻을 때마다 동일하지 않습니다. name 메시지를 식별 할 수 있습니까?

+0

워, 그것은 name' 실제로 일관성있는 뭔가를 반환'처럼 보인다. 그것은 c-string입니까? 프로토콜 개체에서 문서를 찾을 수없는 이유는 무엇입니까? –

+0

Objective-C 런타임 소스를 사용할 수 있으며 '프로토콜 *'의 정의를 조회 할 수 있습니다. Dave DeLong의 답변에 따라 Foundation 기능 (예 : NSStringFromProtocol)을 사용하는 것이 좋습니다. –

답변

4

음, 프로토콜 고유 한 이름이 있어야합니다 (그렇지 않으면 그들은 서로 충돌 것), 그래서에 대해 어떻게 :

Protocol * aProtocol = ... 
NSString * protocolIdentifier = NSStringFromProtocol(aProtocol); 
+0

정확히 내가 무엇을 찾고 있었습니까. 어떻게 문서에서 그런 종류의 것을 발견합니까? –

+0

내가 여기있는 동안 어떤 임의의 객체 (예 :?)에 대한 키를 얻는 가장 좋은 방법은 무엇인가 [obj hash]를 요청하고 문자열로 바꿀 수는 있지만 그 생각은 좋지 않다고 생각합니다. 물건에 대해 똑같이 멋진 것이 있습니까? –

+0

@Sean - 기초 함수 참조 : http://developer.apple.com/mac/library/documentation/cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html 인스턴스를 고유하게 식별하는 방법 해시 또는 객체의 주소를 사용할 수 있습니다. –

관련 문제