3

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

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

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

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

任何帮助,将不胜感激。

4

3 回答 3

4
MyHttpCallbacks *callbacks = [[MyHttpCallbacks alloc] init];
request.delegate = callbacks;
于 2012-09-13T19:28:32.910 回答
1

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

我在最后添加的 ServerComm.h

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

服务器通信.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 {
        ...
    }    
}
于 2012-09-13T19:29:54.330 回答
0

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

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

所以是这样的:

[request setDidFinishSelector: @selector(callbackFunction)];

在同一个类中回调:

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

successHttpMethod 位于另一个类中,您将其作为导入包含在内。

于 2012-09-13T19:24:25.053 回答