在做多款商品的多张商品图片下载后合成一张图片分享微信功能时遇到两个bug,一是内存暴增达1G,二是分享微信聊天好友经常失败
内存暴增的原因是压缩图片方法生成的data没有释放,因为image被我存到数据模型中引用了,取消把下载的图片存到模型中就好了。
NSData*compressedData =UIImageJPEGRepresentation(image, 0.9);
分享微信失败原因是下面方法第三个参数设置过大,之前我用6作为参数,合成图分辨率太高,被拒绝分享了
UIGraphicsBeginImageContextWithOptions(CGSizeMake(kScreenWidth,newImageH), NO, [UIScreen mainScreen].scale);
尝试解决内存暴增原因时,使用autoreleasepool,在真正解决暴增的原因后没有删除autoreleasepool,引入了新的问题。在异步线程中循环遍历,模型goodsListModel引用被释放,导致数据混乱了。
@autoreleasepool{
- //获取合成图
- goodsListModel.batchPrice = pirce.floatValue;
- YXBCompositeMapTool *tool = [YXBCompositeMapTool sharedCompositeMap];
- tool.goodsListModel = goodsListModel;
});
网友评论