我试图在我的应用中的两个类之间实现委托方法,但是没有调用委托方法。
这是我的代码:
PBPartnersService.h
@protocol PBPartnersServicesDelegate <NSObject>
@required
-(void) didReceiveNewsDatasFromPartners:(NSDictionary *)Datas;
@end
然后我制作了@property:
@interface PBPartnersServices : NSObject
@property (nonatomic, weak) id<PBPartnersServicesDelegate> delegate;
@end
在我的PBPartnersService.m中,我调用了我的委托方法(当我打印self.delegate时,我得到了&#39; nil&#39;):
if ([self.delegate respondsToSelector:@selector(didReceiveNewsDatasFromPartners:)]) {
[self.delegate didReceiveNewsDatasFromPartners:obj];
}
在我的其他类PBTicketsService.h中,我实例化第一个:
@interface PBTicketsService : NSObject <PBPartnersServicesDelegate>
@property (nonatomic,strong) NSDictionary *ticketList;
@property (nonatomic, strong) PBPartnersServices *partnersServices;
- (void) prepareForDelegate;
@end
我在PBTicketsService.m中创建了一个方法,将partnersServices设置为委托:
- (void) prepareForDelegate{
self.partnersServices = [[PBPartnersServices alloc] init];
[self.partnersServices setDelegate:self];
}
然后我的功能永远不会打电话:
-(void) didReceiveNewsDatasFromPartners:(NSDictionary *)Datas{
}
答案 0 :(得分:0)
当您的partnerServices第二次分配partnerServices属性时,将保存在新的内存地址中。对于此对象,您没有设置委托属性。
答案 1 :(得分:0)
您应该使用Dependency injection:添加ticketsService
作为partnerServices
构造函数的参数,或者执行相反的操作。