这是我的情景 我有一个主视图,其中创建了子视图的多个副本。 这就是我这样做的方式 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
答案 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作为子视图添加到另一个视图中时,它会被它的超级视图保留,如果你的代码不再需要直接访问它,你就可以安全地释放它。