objective-c方法中的双星论证?

zpe*_*esk 1 iphone cocoa cocoa-touch objective-c

NSURLResponse *response =[[NSURLResponse alloc] initWithURL:requestingURL
                                                   MIMEType:@"text/xml"
                                      expectedContentLength:-1
                                           textEncodingName:nil];

webData = [NSURLConnection sendSynchronousRequest:theRequest
                                returningResponse:response
                                            error:NULL];
Run Code Online (Sandbox Code Playgroud)

我收到编译器警告说不兼容指针类型的警告传递参数.我怀疑这是因为NSURLResponse参数是双星参数,(NSURLResponse**)?

我在这做错了什么?

Jim*_*eia 8

响应将通过引用返回给您.

NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest: request
                                returningResponse: &response
                                error: &error];
Run Code Online (Sandbox Code Playgroud)

这是调用它的正确方法,并通过引用获取响应和错误.

在上面的代码中,除了语法错误之外,您还在泄漏响应对象.

  • 它会覆盖`error`,如果它有一个给你,但如果它没有,它将保持'错误'不受影响.(即使它没有保持不变,你仍然应该假设它,因为在没有错误的情况下,一个方法对`error`的做法通常没有记录.)表面上,你应该能够依赖`错误如果`data`是'nil`,那就是非'nil`,但要记住Finagle定律. (3认同)