iOS代表团不起作用

时间:2014-06-23 13:53:05

标签: ios objective-c delegates

我试图在我的应用中的两个类之间实现委托方法,但是没有调用委托方法。

这是我的代码:

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{

}

2 个答案:

答案 0 :(得分:0)

当您的partnerServices第二次分配partnerServices属性时,将保存在新的内存地址中。对于此对象,您没有设置委托属性。

答案 1 :(得分:0)

您应该使用Dependency injection:添加ticketsService作为partnerServices构造函数的参数,或者执行相反的操作。