我有一个奇怪的错误,我似乎无法找到任何文档或帖子。当我尝试使用标准教科书方法连接到我的Web服务(更改了隐私URL)时,我在[NSURLConnection initWithRequest]上收到EXC_BAD_INSTRUCTION或EXC_BAD_ACCESS。
最奇怪的是,有时我可以毫无例外地跨过违规行,但是10次中有9次会导致此错误。有什么建议吗?
- (void)viewDidLoad {
NSURL *url = [NSURL URLWithString:@"http://heres/where/my/webservice/url/is/"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30.0];
// cancel any old connection
if(connection) {
[connection cancel];
[connection release];
}
// create new connection and begin loading data
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if(connection) {
// if the connection was created correctly, release old data (if any), and alloc new
[data release];
data = [[NSMutableData data] retain];
}
[url release];
[request release];
}
非常感谢任何帮助或建议或RTFM!
答案 0 :(得分:1)
您正在发布自动释放的对象:
NSURL *url = [NSURL URLWithString:@"…"];
NSURLRequest *request = [NSURLRequest requestWithURL:url …];
// …
[url release];
[request release];
我认为Clang应该能够捕获这些,请参阅Build→Build and Analyze(Cmd-Shift-A)。 Clang是你的朋友,习惯它。
答案 1 :(得分:0)
EXC_BAD_ACCESS表示您正在尝试释放已经释放的对象。正如zoul所说,您使用的url和request方法是自动释放方法,因此您不应在代码末尾手动释放它们。
你应该做的就是接受他的回答......因为他是对的。