0

我有一个特定的场景,我试图完成更通用的方法来使用委托并根据正在设置的选择器调用选择器。

例如下面是代码:

@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];

但它给了我一个未知选择器的错误,但是当我注意到委托的引用在初始化时它是相同的。

我正在尝试在不同的类中使用委托执行选择器,除了我需要在这里做的其他事情吗?

谢谢。

4

2 回答 2

0

我想应该是;看起来您正在其他地方实现功能并尝试从未继承委托的地方调用,并且可能会错过该特定功能实现。

通常,使用委托模式,因此我们可以根据需要实现函数(或者可以说提供回调),但该类必须符合该委托。您检查了吗?

请详细说明您的实施,因为我认为幕后有很多信息,例如:WLCC_ApiCaller executeAsync 等。

于 2012-11-30T09:01:41.987 回答
0

像这样定义您的协议:

@protocol HttpRequestDelegate <NSObject>

有一个NSObject类和一个NSObject协议。您的所有协议都应符合NSObject协议。这为您提供了类似的方法respondsToSelector:和其他方法。

于 2012-11-30T07:19:38.390 回答