0

我想问你关于NSURLConnectioniPhone的objective-c。

我有一个应用程序需要连接到一个网络服务来接收数据(关于 YouTube 视频),然后我有我需要连接的所有东西(类似于网络中的 Hello_Soap 示例代码)。

但是现在,我的问题是我创建了一个NSObject名为的类(继承自 ),Connection并且我已经实现了方法: didReceiveResponse、和. 还有方法:didReceiveDatadidFailWithErrorconnectionDidFinishLoading

-(void)Connect:(NSString *) soapMessage{
    NSLog(soapMessage);

    NSURL *url = [NSURL URLWithString:@"http://....."];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];


    [theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [theRequest setHTTPMethod:@"POST"];
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if( theConnection )
    {
        webData = [[NSMutableData data] retain];
    }
    else
    {
        NSLog(@"theConnection is NULL");
    }
}

但是当我从我的 AppDelegate 创建一个Connection对象时:

Connection * connect = [[Connection alloc] Init:num]; //It's only one param to test.
[connect Connect:method.soapMessage];

我调用这个方法,当它完成时,它不会继续调用didReceiveResponse,或. 我正在尝试这样做,但我暂时做不到。didReceiveDatadidFailWithErrorconnectionDidFinishLoading

我想做的事情是能够在每次我想接收数据时调用这个类“连接”(之后被解析并显示在UITableViews 中)。

谢谢你。

4

1 回答 1

0

我要探索的一个起点是不要将您的课程命名为“连接”。Objective-C 中没有名称空间,并且名称与“Connect”一样通用,因此其他同名的类可能会导致您出现问题。

惯例是在前面加上一些与项目或您的公司相关的字符,例如,如果您的项目名为 Amazing Thing,您可以将类命名为“ATConnector”。您可以突出显示 .h 文件中的类名,并使用“重构”菜单命令轻松更改它,同时修复其他引用。

此外,如果您在调用后释放 Connect 类或 NSURLconnection,那么您会看到没有调用委托方法的效果——但这很难从存在的代码中确定。

于 2009-07-10T08:15:54.060 回答