议定书未得到承认

时间:2013-01-04 05:42:55

标签: iphone objective-c

我尝试为某些配置设置设置协议,我知道我的协议没有被识别,因为我没有将委托设置为self。但是我的问题来了,我有两个类:Manager和Configurator。

Manager类将消息发送到自己定义的协议。 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>
 .....

在.m文件中

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

我不想或不需要实例化Configurator类或Manager类,或者这是完全必要的?

谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

当您的config班级allocmanager班级时,需要说[self.manager setDelegate: self],否则manager班级不会发现{{1} class是它的委托。
这两个类都需要在某处实例化,以便使用任何定义的方法或协议。

答案 1 :(得分: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"];
}

我认为这会对你有所帮助。