2013-05-21 1 views
0

내 웹 API에 액세스하는 일반 저장소 (패턴)를 만들려고합니다. 프로토콜이 객관적으로 작동하는 방법을 이해하는 데 어려움을 겪고 있습니다. -c (인터페이스가 약간 다른 C#에서 왔습니다).다른 프로토콜의 매개 변수로 Objective-C 프로토콜

내가하려고하는 것은 ProtocolA가 다른 ProtocolB의 매개 변수가되고 ProtocolB의 ProtocolB 액세스 메소드 구현에서 ProtocolB로 전달 된 객체가 ProtocolA 자체를 구현해야하기 때문입니다. 나는 그것에 대해 정확하게 생각하고 있는가?

내가 지금까지 가지고 있지만 그것을 얻이 수없는 것 무엇인가 - 어쩌면 나의 논리는 잘못된 것입니다 :

//PGenericModel.h 
@protocol PGenericModel <NSObject> 
- (void)testMethod; 
@end 


//PGenericRepository.h 
#import "PGenericModel.h" 
@protocol PGenericRepository <NSObject> 
@required 
- (void)Get:(id<PGenericModel>*)entity; 
@end 


//GenericRepository.m 
#import "GenericRepository.h" 
@implementation GenericRepository 
- (void)Get:(id<PGenericModel>*)entity 
{ 
    //GET 
    [entity testMethod] <-- this doesn't work... 
} 
@end 
+1

C#에서 오는 경우에도 Obj-C에서 C# 명명 규칙을 사용하지 마십시오. 예를 들어 모든 메소드 이름은 소문자로 시작해야하며 매개 변수를 설명해야합니다 (예 : 'getForEntity :' – Sulthan

+0

@ Suulthan 고맙다, 고마워! – crizzwald

답변

6

id 형식이 이미 po이기 때문에 작동하지 않습니다. Objective-c 객체와 상호 작용합니다. 당신이 얻을하지 않는

그래서 당신이 그렇지 않으면 인수가 목표 - C 객체에 대한 포인터에 대한 포인터가 될 것

- (void)Get:(id<PGenericModel>)entity 

하지 id<PGenericModel>*로 서명을 선언해야합니다, 당신은 메시지를 보낼 수 없습니다 구체적인 가치.

+0

아. 감사. :: 페이스 팜 :: – crizzwald

관련 문제