iOS - 如何从另一个类指定回调?

时间:2012-09-13 19:19:04

标签: iphone ios

我是iOS新手。我想为Http执行指定成功回调。但是,这是在另一个班级。我该如何指定它?我尝试了以下内容 -

[request setDidFinishSelector: @selector([[MyHttpCallbacks get] successHttpMethod]:)];

回调函数在MyHttpCallbacks中定义。这不起作用。如果我在同一个类中定义方法并像这样使用它可以正常工作 -

[request setDidFinishSelector: @selector(successHttpMethod:)];

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:4)

MyHttpCallbacks *callbacks = [[MyHttpCallbacks alloc] init];
request.delegate = callbacks;

答案 1 :(得分:1)

我遇到了同样的问题,我在我的情况下创建了HTTP处理类(ServerComm)来调用委托方法。

ServerComm.h我在最后添加了

@interface NSObject (ServerCommDelegate)
- (void)finishedLoading:(NSString*)result success:(BOOL)success;
@end

ServerComm.m

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    ...

    if ( [delegate respondsToSelector:@selector(finishedLoading:success:)] ) {
        [delegate finishedLoading:aStr success:YES];
    }    
}

创建实例后的主类

serverCommObj.delegate = self;

然后是方法

- (void)finishedLoading:(NSString*)result success:(BOOL)success 
{
    if (!success) {
        ...
    } else {
        ...
    }    
}

答案 2 :(得分:0)

我原信你想要实现的是不可能的(除非有人有黑客并且我不知道)。我多次遇到这个问题,我不得不改变我的设计,并将回调包含在与创建它的同一个类中。

虽然,想一想。 (这是我没有尝试自己的建议)你可以在main中使用你的回调类“include”,然后从那里调用一个调用回调函数的选择器函数。不是一个非常有效的黑客,但我认为它会起作用。

这样的事情:

[request setDidFinishSelector: @selector(callbackFunction)];

回拨在同一个班级:

- (void)callbackFunction {
    [MyHttpCallbacks get] successHttpMethod];
}

其中successHttpMethod驻留在另一个类中,并将其包含为导入。