如何在iPhone中发布NSURLConnection(Objective C)

时间:2011-04-14 10:32:27

标签: iphone objective-c nsurlconnection

我已经在我的项目的许多地方使用这行代码在各种功能下:

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];

现在我收到通常的警告“未使用的变量theConnection”。 我也知道它的泄漏记忆。

可以使用以下代码吗?

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];
[theConnection release];

如果我释放了theConnection对象,那么在诸如didReceiveData,connectionDidFinishLoading等委托方法中会出现问题吗?

如果上面的语句可以解决内存泄漏而没有问题如何摆脱警告“未使用的变量等等等等?”

2 个答案:

答案 0 :(得分:1)

Now I'm getting an usual warning "Unused variable theConnection". I also know that its leaking memory.

因为您没有使用theConnection对象

而收到警告的原因

如果您不希望为此实例调用delgate函数,请将delegate设置为nil而不是self

[[NSURLConnection alloc] initWithRequest:request delegate:nil];

<强>编辑:

在.h课程中

NSURLConnection* m_URLConnection;

在.m级:

-(id) init
{
  m_URLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:nil];
}
-(void) dealloc
{
  [m_URLConnection release];
  m_URLConnection = nil ;
}

答案 1 :(得分:0)

我认为你可以使用这个

[[NSURLConnection alloc] initWithRequest:request delegate:self];

我认为这不会显示警告

或者我认为你也可以尝试将连接对象作为类的实例变量。

theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];

您可以根据theConnection中的代码或其他方法,通过发布dealloc来避免泄露