希望这个链接可以帮助你避免基本的内存问题。
编辑:
正如我们所知,苹果在IOS 5.0中引入了ARC,它是一个编译器级别的功能,简化了objective-c对象的生命周期过程。在ARC引入之前,我们手动管理内存,即“手动引用计数(MRC)”。使用MRC需要开发人员记住何时释放或保留对象。也就是说,开发人员需要管理objective-c对象的生命周期。
从开发者的角度来看,我们更关心向应用程序添加新功能,而不是专注于内存问题。但是,确保内存管理对应用程序成功至关重要。为了帮助开发人员,苹果找到了一种自动管理内存的方法。
ARC可以智能地管理内存,但这并非百分之百可靠。在开发过程中,我们需要注意一些细节,以避免应用程序出现内存不足的问题。下面我将尝试提供在基于ARC的应用程序中管理内存的解决方案。虽然这不能保证百分之百成功,但它可以帮助编译器估计objective对象的生命周期。
以下是你需要在每个控制器中实施的步骤:
第1步。 为应用程序中使用的每个UI控件声明弱引用属性。
示例:@property (nonatomic, weak) IBOutlet UIButton* btnPost;
@property (nonatomic, weak) IBOutlet UITableView* tblMessages;
第二步。根据我们的开发人员,最令人困惑的问题是编译器是否允许在基于ARC的应用程序中声明“dealloc”方法。答案是肯定的,但不允许在其中声明“[super dealloc]”。因此,请在每个控制器中重写“dealloc”方法。
-(void)dealloc{
}
第三步。 在“dealloc”方法中从父视图中移除重载对象,而不是仅仅设置“nil”引用,例如MKMapview、ScrollView等。
-(void)dealloc{
dictAddress = nil;
arrayList = nil;
[map removeFromSuperview];
[scrollView removeFromSuperview];
}
dealloc
在 ARC 中也被调用。因此,将 nil
赋值给强引用变量。 - Jatin Patel - JPdealloc
将强引用变量设置为nil
。因此,步骤3是多余的。 - CRD