我创建了一个运行良好的自定义委托。但是,当我尝试从AFNetworking调用的成功块内部调用委托时,永远不会进行委托调用。知道为什么会这样吗?

success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
    NSLog(@"Check if delegate exists %@", self.delegate);// returns null

    dispatch_async(dispatch_get_main_queue(), ^{
        if ([self.delegate respondsToSelector:@selector(myMethod)]) {
            NSLog(@"Selector myMethod found and called");
            [self.delegate myMethod];
        }
    });


}


请注意,NSLog语句为self.delegate返回null。我也尝试使用dispatch_async(dispatch_get_main_queue()和不使用的呼叫。同样,如果我在成功块之外进行调用,它将起作用:所以问题与我创建委托的方式无关:)。谢谢。

最佳答案

....self.delegate);// returns null

好,没有设置委托。



无论如何,混合使用块回调和委托似乎很奇怪。只需让委托人添加执行的块即可。
此外,AFNetworking确实将其称为主队列/线程上的块,您不必分派该代码。

关于ios - 不能从AFNetworking成功块中调用自定义委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25855905/

10-16 11:30