我有一个特定的场景,我正在尝试使用委托来完成更通用的方法,并根据正在设置的选择器调用选择器。
例如,下面是代码:
@protocol HttpRequestDelegate
@optional
- (void)testDrive:(NSData*)dataembedd;
@end
- (id)init {
self = [super init];
if (self) {
//Initialize it here.
self.HttpRequestdelegate = self;
}
return self;
}
HttpRequest *apiCaller = [[HttpRequest alloc] init];
NSLog(@"%@",apiCaller.HttpRequestdelegate);
[WLCC_ApiCaller executeAsync:apiCaller.HttpRequestdelegate :@selector(testDrive:) :[NSURL URLWithString:updateUrl] :wlcc_Get];
然而,在executeAsync调用时,我试图调用像测试驱动器这样的选择器:
[delegate performSelector:@selector(selector) withObject:responseData];
但是它给了我一个未知选择器的错误,但是当我注意到委托的引用时它在初始化时是相同的。
我正在尝试在不同的类中使用委托执行选择器,除此之外我还需要做什么吗?
感谢。
答案 0 :(得分:0)
像这样定义你的协议:
@protocol HttpRequestDelegate <NSObject>
有一个NSObject
类和一个NSObject
协议。您的所有协议都应符合NSObject
协议。这为您提供了respondsToSelector:
和其他方法。
答案 1 :(得分:0)
我想应该是;看起来你正在实现其他函数,并尝试从那个没有继承委托的地方调用,可能会错过那个特定的函数实现。
通常,使用委托模式,因此我们可以根据需要实现该功能(或者可以说提供回调)但该类必须符合该委托。您检查过它吗?
请详细说明您的实施情况,因为我认为幕后有很多信息,如:WLCC_ApiCaller executeAsync等。