2009-10-28 56 views
0

我遇到了我的类正在进行一个异步Web调用,并且用户请求另一个(通过移动地图)并且似乎无法正确取消NSURLConnection的情况。我已经看到一些解决方案来管理多个异步调用,但我不想这样做,因为一旦第二个请求被提出,我不再关心第一个。我看到有一个取消方法,但我试图只在连接为零时调用它,但连接似乎永远不会成为零,尽管该对象上有释放。有没有人有适当的取消异步NSURLConnect的代码示例?iphone取消异步NSURLConnection

回答

3

我不认为你理解Objective C消息传递或保留/释放。将保留或释放发送到对象绝不会导致您为该对象持有的指针变为零(尽管该对象可能不再有效)。换句话说:

id a = b; 
[a release]; 

//since release never changes the value of a 
assert(a == b); 

好了,话说回来,如果以某种方式释放代码改变对象的指针的值,你把它称为对为零,然后发送另一条消息,它会做什么。消息到零是默默地丢弃。记住,你所持有的是指向对象的指针,而不是对象本身。

话虽如此,如果你想取消NSURLConnection。您必须在发布消息之前发送取消消息(通常,发布消息后发送消息永远不会正确)。

我真的建议你阅读苹果的内存管理documentation