苹果手机;何时从中派生多个副本时发布视图?

时间:2010-12-07 14:29:40

标签: iphone objective-c cocoa-touch uiview

这是我的情景 我有一个主视图,其中创建了子视图的多个副本。 这就是我这样做的方式 1.在主视图中,我为子视图创建了一个变量 2.创建子视图的多个副本并将其显示在可滚动视图内,该视图工作正常 3.什么时候才能发布子视图变量?

子视图声明 SubView * svm;

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here
// am not releasing svm here
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here
// am not releasing svm here
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here
// am not releasing svm here

我不确定这是否正确,但效果很好。

如果我在主视图的dealloc中释放svm,那会没事吗?我该怎么办呢?

由于 Veeru

1 个答案:

答案 0 :(得分:1)

每次分配新内存时都会为新实例分配。为了防止在创建新实例之前应该释放内存泄漏。

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here
[svm release];

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here

[svm release];
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil]
//Show svm here
[svm release];

BTW当你将svm作为子视图添加到另一个视图中时,它会被它的超级视图保留,如果你的代码不再需要直接访问它,你就可以安全地释放它。