【问题标题】:Connection class implementing NSURLConnectionDataDelegate实现 NSURLConnectionDataDelegate 的连接类
【发布时间】:2009-07-09 19:05:00
【问题描述】:

我想问你关于 iPhone 的objective-c 中的NSURLConnection

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

但是现在,我的问题是我创建了一个名为 Connection 的类(继承自 NSObject)并且我已经实现了这些方法: didReceiveResponsedidReceiveDatadidFailWithErrorconnectionDidFinishLoading。还有方法:

-(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];

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

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

谢谢。

【问题讨论】:

  • 请同时发布您的委托方法。此外,Objective-C 约定是方法名称以小写开头。

标签: ios objective-c nsurlconnection nsurlconnectiondelegate


【解决方案1】:

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

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

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

【讨论】:

  • 除非您处理外部代码,否则不必使用前缀。唯一没有前缀的 Apple 类是核心 Objective-C 语言类,如 Object 和 Protocol。
猜你喜欢
  • 1970-01-01
  • 2013-01-08
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
相关资源
最近更新 更多