ARC与ASIHTTPRequest

时间:2011-09-19 11:36:58

标签: iphone ios automatic-ref-counting

我正在使用iOS SDK 5来开发应用程序,而我正在尝试使用ARC。但我需要使用ASIHTTPRequest并且它不支持ARC。 Apple的医生表示可以使用基于ARC的文件。所以我用ASIHTTPRequest编译了所有-fno-objc-arc个文件。我在我的课程中编写了以下代码,它使用的是ARC:

NSURL *url = [[NSURL alloc] initWithString:urlStr];
ASIHTTPRequest *req = [[ASIHTTPRequest alloc] initWithURL:url];
req.delegate = self;
[req startAsynchronous];

但执行第一行后,网址为零。有什么问题或如何在ARC项目中使用手动托管代码?感谢。

1 个答案:

答案 0 :(得分:4)

您是否在网址字符串中转义了所有非ASCII字符?如果没有,则不会创建NSURL实例,因为它不知道如何处理URL字符串中的非ASCII字符。你需要这样做:

NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

此外,为什么不使用Apple的辅助方法URLWithString:而不是创建自己的NSURL实例,这将为您提供一个'自动释放的'NSURL实例,如下所示:

NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIHTTPRequest *req = [[ASIHTTPRequest alloc] initWithURL:url];
req.delegate = self;
[req startAsynchronous];