2013-01-04 18 views
0

일부 구성 설정을 위해 프로토콜을 설정하려했으나 대리자를 자체 설정하지 않기 때문에 프로토콜이 인식되지 않습니다. 하지만 여기에 내 질문이 온다, 나는 2 개의 종류가있다 : 매니저와 형성 자.프로토콜을 인식하지 못합니다.

관리자 클래스는 메시지를 자체적으로 정의한 프로토콜로 보냅니다. Configurator 클래스는 프로토콜을 채택하고 구현합니다.

@protocol ManagerDelegate <NSObject> 

- (NSDictionary *)getString:(NSString *)type; 
@end 
@property (nonatomic, assign) id<ManagerDelegate> delegate; 

-(void)someMethod{ 
NSSting *test = [self.delegate getString:@"protocol"]; 

구성 클래스 :

@interface Configurator : NSObject <ManagerDelegate> 
..... 

그리고

- (NSDictionary *)getString:(NSString *)type{ 
    return type;} 

내가 원하는 해달라고 또는 구성자 클래스 또는 관리자의 인스턴스를 필요로하는 .m 파일에

관리자 클래스

수업이 필요합니까?

도움 주셔서 감사합니다.

답변

0

config 클래스 alloc 's를 manager 클래스, 그것은 [self.manager setDelegate: self] 그렇지 않으면 manager 클래스는 config 클래스가 대리자임을 인식하지 못하는 말을 할 필요가있다.
정의 된 메서드 나 프로토콜 중 하나를 사용하려면 두 클래스를 어딘가에서 인스턴스화해야합니다.

0

여기에서 대리인을 만들 필요가 없습니다. - (NSDictionary *)getString:(NSString *)typeNSObject의 서브 클래스 인 Configurator 클래스의 메소드입니다. Manager 클래스에서 Configurator 클래스의 인스턴스를 만들고이 인스턴스를 사용하여 Configurator 클래스의 메서드에 액세스 할 수 있습니다.

-(void)someMethod{ 
Configurator *objConfigurator = [[Configurator alloc] init];//Or You can declare instance in Configurator.h. 
NSSting *test = [objConfigurator getString:@"protocol"]; 
} 

나는 그것이 당신에게 도움이 될 것이라고 생각합니다.

+0

당신은 나에게 그것을 해결하기위한 힌트를주었습니다. 내가 한 것은 configurator 클래스의 싱글 톤 인스턴스를 설정하는 것이었고, 관리자 클래스의 init 메소드에서는 configurator 클래스의 인스턴스에 위임자를 설정했습니다. 감사! – marsalal1014

+0

내 코드를 수정했습니다 ... 확인해보십시오. –

관련 문제