此文章为内存问题小记,记录一些容易忽视的内存问题
1.NSString的内存问题
尽量使用copy修饰NSString,不然可能会出现外部赋值变量变化后,NSString也跟着变化,原因是指向同一地址,copy则是对其做了一份深度拷贝,指针已经变化了。
NSString *a0 = @"aaa";
这种初始化方法初始出来的是一个常量字符串__NSCFConstantString,在编译的时候会把它添加到常量表,而常量表的变量在APP结束之后才会释放,不受自动内存管理机制的管理。所以当出现循环创建字符串的时候,若用上面方法会出现内存问题。
应该使用initWithFormat:
和 stringWithFormat:
进行初始化。
2.图片加载的内存问题
在UIImageView加载图片时,应尽量向CDN请求适当大小的图片规格(通常CDN都会支持图片用拼接size参数的url取指定大小图片),不然有时候在加载列表页面遇到特别大的图片会导致内存暴涨,可能引起闪退。