委托函数未被调用

时间:2010-08-20 08:53:12

标签: iphone delegates nsurlconnection

长时间潜伏,第一次海报。

我正在制作一个ServerConnection模块,使其变得模块化且更容易,但是在调用委托时遇到了麻烦。我已经看到了更多这样的问题,但没有一个答案解决了我的问题。

ServerConnection设置为协议。因此,在Login.m中创建一个ServerConnection对象,该对象调用服务器,然后在Login中添加委托方法以处理是否有错误或者是否已完成,这些由ServerConnection调用,如下所示。

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

    if( [self.delegate respondsToSelector:@selector(connectionDidFinish:)]) {
        NSLog(@"DOES RESPOND");
        [self.delegate connectionDidFinish:self];
    } else {
        NSLog(@"DOES NOT RESPOND");
    }

    self.connection = nil;
    self.receivedData = nil; 

}

它总是“没有回应”。我已经尝试了CFRunLoop技巧(下面),但它仍然不起作用。

- (IBAction)processLogin:(id)sender {

    // Hide the keyboard
    [sender resignFirstResponder];

    // Start new thread
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // Acutally call the server
    [self authenticate];

    // Prevent the thread from exploding before we've got the data
    CFRunLoopRun();

    // End thread
    [pool release];

}

我对Apple URLCache demo进行了大量复制,并将它们进行了多次比较,但未发现任何差异。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

以下是要问的问题:

  • 您的代表是否回复connectionDidFinishLoading:
  • 签名是否匹配,即需要另一个对象?
  • 代表是否设置或是否为零? (用这种方法检查)

如果其中任何一个是“否”,你会看到“没有回复”......所有这些都可能在你的申请中发生,但所有这些都很容易理解。