我有一个应用程序的问题,每次推到特定视图时内存都会持续增长。重现这种内存增加的过程如下:
1. 显示用户登录视图控制器 2. 推送主页视图控制器 3. 推送设置视图控制器 4. 登出用户(在设置视图控制器中的按钮)- 弹出到用户登录视图控制器 5. 登录并推送主页视图控制器
每次我推到主页视图控制器时(即使我已确认前一个视图控制器正在被释放),内存都会跳升6+ mb。我对应用程序进行了分析,并在分配中看到了一个明显的问题:VM:ImageIO_PNG_Data和VM:CoreAnimation类别。
其中一些发生在我使用的一个名为遮罩视图的类中,它绘制了该视图下方的指定部分层。用于绘制的代码如下所示:
1. 显示用户登录视图控制器 2. 推送主页视图控制器 3. 推送设置视图控制器 4. 登出用户(在设置视图控制器中的按钮)- 弹出到用户登录视图控制器 5. 登录并推送主页视图控制器
每次我推到主页视图控制器时(即使我已确认前一个视图控制器正在被释放),内存都会跳升6+ mb。我对应用程序进行了分析,并在分配中看到了一个明显的问题:VM:ImageIO_PNG_Data和VM:CoreAnimation类别。
其中一些发生在我使用的一个名为遮罩视图的类中,它绘制了该视图下方的指定部分层。用于绘制的代码如下所示:
//Draw project image
CGRect newRect = self.frame;
if (useCustomFrame){
newRect = customFrame;
}
CGImageRef image = CGImageCreateWithImageInRect([self.projectedImage CGImage], newRect);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, rect, image);
// Release Context
CGImageRelease(image);