这篇文章针对ARC项目的内存处理和内存安全释放。内存是ios开发中一个比较头疼的问题,下面三篇文章是我个人对内存的理解,仅供参考!希望能对你的开发有所帮助!
一、ARC-静态分析和处理内存泄露。
例1、值参数“setObject:forKey”不能为零.导致内存泄露。
解决:字典的设值的两个方法,setValue:forKey 和 setObject:forKey。功能一样,但是setObject:forKey设置值为nil时会闪退。用setValue不会,还可避免静态内存泄露。
例2、返回“self”,而不是设置的结果.
解决:注意代码风格。如下:
- (id)initWithFrame:(CGRect)frame
{
self = [superinitWithFrame:frame];
if (self) {
[selfinitSubViews];
}
returnself;
}
导致原因是这样的代码:
解决:可以这样写。
NSDictionary *dic =nil;
例4、潜在的泄漏对象存储在“reuslt”。
解决:下面的对比你就知道了!
- (NSString *)fullName {
NSString *string = [NSString stringWithFormat:@"%@ %@",
self.firstName, self.lastName];
return string;
}
//没有泄露的写法
- (NSString *)fullName {
NSString *string = [[NSString alloc] initWithFormat:@"%@ %@",
self.firstName, self.lastName];
return string;
}
。。。。。。。。。。。