我正在创建一个ios应用程序,并且我已经启用了ARC模式。我正在将24个实例加载到ScrollView中,但一次只显示三个视图。因此,我将删除其他不需要的实例,这些实例已经加载到内存中
if((NSNull *)[viewControllers objectAtIndex:2] != [NSNull null]) {
[viewControllers replaceObjectAtIndex:2 withObject:[NSNull null]];
[content3.view removeFromSuperview];
//remove third content page
[content3 viewDidUnload];
//set nil to instance to memory management
content3 = nil;
NSLog(@"Content 3 removed");
}
但当我向探查器检查时,内存不会被释放,只是会自动增加。
有人能给我一些关于这个问题的建议吗?
感谢
我认为您的代码中有很多问题:
- 一个重要的问题是,您正在调用委托方法
viewDidUnload
。千万不要尝试做这样的事情,否则你会面临来自应用程序的奇怪行为 - 如果您需要从内存中删除一个对象,只需将其设置为nil即可
- 我认为你的if条件永远不起作用,为什么你要把它类型转换为NSNull
使用此代码进行检查:
if([viewControllers objectAtIndex:2] != [NSNull null])
{
[viewControllers replaceObjectAtIndex:2 withObject:[NSNull null]];
[content3.view removeFromSuperview];
content3 = nil;
NSLog(@"Content 3 removed");
}