2013-01-04 137 views
0

我試圖設置一些協議的配置設置,我知道我的協議沒有被識別,因爲我還沒有設置委託給自己。但是這裏出現了我的問題,我有兩個類:管理器和配置器。協議未被識別

管理類將消息發送給自己定義的協議。配置器類採用協議並實現它。

Manager類:

@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> 
..... 

而在.m文件

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

我不想要或需要實例化配置類或管理公司上課,或者這是完全必要的?

感謝您的幫助!

回答

0

當你的configalloc的的manager類,它需要說[self.manager setDelegate: self]否則manager類是不知道該config類是它的委託。
這兩個類都需要在某處進行實例化,以便使用任何定義的方法或協議。

0

不需要在這裏創建委託。 - (NSDictionary *)getString:(NSString *)typeConfigurator類中的方法,它是NSObject的子類。您可以在Manager類中創建Configurator類的實例,並使用此實例訪問Configurator類的方法。

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

我認爲這會對您有所幫助。

+0

你給了我一個提示來解決它。我所做的是設置配置器類的單例實例,並且在管理器類的init方法中,我將代理設置爲配置器類的一個實例。謝謝! – marsalal1014

+0

我編輯了我的代碼...檢查它。 –