嗨,询问一些关于模拟器(iPhone 14专业版)和我的真实的设备(iPhone 12迷你版)之间的内存使用差异。
麻烦制造者代码在这里
@objc func handlePan(sender: UIPanGestureRecognizer) {
let translation = sender.translation(in: view)
let progress = translation.x / view.bounds.width
//print(translation.x)
switch sender.state {
case .began:
previousImageNumber = imageNumber
previousPanDirection = .none
previousRotationAngle = currentRotationAngle
case .changed:
let currentPanDirection: PanDirection = progress > 0 ? .right : .left
currentRotationAngle = previousRotationAngle + 2 * .pi * progress
imageNumber = previousImageNumber - Int(round(currentRotationAngle / (2 * .pi / 60)))
imageNumber %= 60
if imageNumber <= 0 {
imageNumber += 60
}
let imageNumStr = converter()
imageView.image = nil // **I expected UIImage to be nil. Memory in simulator doesn't increase, but real device not.**
imageView.image = UIImage(named: "image_" + imageNumStr)
previousPanDirection = currentPanDirection
case .ended:
currentRotationAngle = 0
default:
break
}
}
字符串
与上面的代码一样,我希望堆中的UIImage将被释放。因为我的模拟器内存没有增加。
的
的
但是,当我在我的真实的设备上运行并开始平移手势时,内存踢屋顶。
我有两个问题
1.为什么在我调用“imageView.image = nil”后UIImage内存没有被释放?
1.为什么我的模拟器和真实的设备之间的内存状态不同?
1条答案
按热度按时间but5z9lq1#
1.因为使用
UIImage(named:)
创建的图像会被缓存。1.因为模拟器不是一个设备。