“initWithTarget”变量两次

时间:2011-02-22 13:53:29

标签: objective-c

我有一个viewController显示一些内容。在头文件中,我定义了一个名为_clientRequest的实例变量,它是一个ClassA对象。 ClassA处理从服务器下载Json。

对于不同的用户,控制器中有1或2个使用ClassA的位置。

目前我的代码是这样的,

// 1st request. every user will do this.

_clientRequest = [ClassA alloc] initWithTarget......];

[_clientRequest download];

...

// 2nd request. some user will do this.

_clientRequest = [ClassA alloc] initWithTarget......];

[_clientRequest upload];

您可能会注意到_clientRequest" alloc"和" initWithTarget"两次。将来,服务器请求可能在此控制器中更多。所以我不想为1个请求声明1个变量。上面的代码有什么问题吗?如果变量是alloc并初始化的,那么如何重新分配并重新初始化它呢?我运行应用程序,没有崩溃发生。

我是obj-c的新手。英语不是我的母语。希望你能理解。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这会泄漏内存,因为您正在将ClassA分配给_clientRequest,然后分配另一个实例而不在第一个上调用 release 。以这种方式分配数据时,必须自己释放它。

您应在第二次致电[_clientRequest release];

之前致电[ClassA alloc]...