我尝试为某些配置设置设置协议,我知道我的协议没有被识别,因为我没有将委托设置为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类,或者这是完全必要的?
谢谢你的帮助!
答案 0 :(得分:0)
当您的config
班级alloc
是manager
班级时,需要说[self.manager setDelegate: self]
,否则manager
班级不会发现{{1} class是它的委托。
这两个类都需要在某处实例化,以便使用任何定义的方法或协议。
答案 1 :(得分:0)
无需在此创建委托。 - (NSDictionary *)getString:(NSString *)type
是Configurator
类中的方法,它是NSObject
的子类。您可以在Manager类中创建Configurator类的实例,并使用此实例访问Configurator类的方法。
-(void)someMethod{
Configurator *objConfigurator = [[Configurator alloc] init];//Or You can declare instance in Configurator.h.
NSSting *test = [objConfigurator getString:@"protocol"];
}
我认为这会对你有所帮助。