2011-03-25 63 views
0

我有一个类可以处理iPhone上的所有网络访问。我用它的方式如下:不确定在对象上何处调用释放。帮帮我?

-(void) randomFunction: 
{ 
    // Assign params etc. <br /> 
    TTNetworkAccessLib *nLib = [[TTNetworkAccessLib alloc] initWithParams:..]; 
    [nLib createAndStartRequest]; 
    // Can't release here since the request is async and is still running. 
} 

-(void) requestSucceded:(NSData *) data 
{ 
    // Can pass a reference to the request object and release here, but doesn't seem right? 
} 

-(void) requestFailed:(int) responseCode 
{ 
    // Can pass a reference to the request object and release here, but doesn't seem right? 
} 
+1

你是否在同一个实例上调用randomFunction:多次? – 2011-03-25 23:01:06

回答

2

当我创建一个异步执行某个对象的对象时,我通常会在启动该过程时保留它自己,并在完成并完成任何回调后释放它自己。这样,创建它的代码可以在以后不需要它时释放它,并且我知道在该过程完成之前它不会被释放。

+0

我经常采取这种方法。 – 2011-03-25 23:07:33

+0

谢谢!想要这样做,但我不确定这是如何完成的。 – 2011-03-26 16:56:41

0

有了这样的委托,我会建议使用自动释放 TNetworkAccessLib * nLib = [[[TTNetworkAccessLib页头] initWithParams:..]自动释放]。

+2

禁止TTNetworkAccessLib实例被其他对象保留,只是简单地自动释放实例可能仍然会导致它在异步请求结束运行之前被释放。 – 2011-03-25 22:09:13