我是iOS新手。我想为Http执行指定成功回调。但是,这是在另一个班级。我该如何指定它?我尝试了以下内容 -
[request setDidFinishSelector: @selector([[MyHttpCallbacks get] successHttpMethod]:)];
回调函数在MyHttpCallbacks中定义。这不起作用。如果我在同一个类中定义方法并像这样使用它可以正常工作 -
[request setDidFinishSelector: @selector(successHttpMethod:)];
任何帮助都将不胜感激。
答案 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驻留在另一个类中,并将其包含为导入。