ios 模拟器和真实的设备之间的UIImage内存不同

ryhaxcpt  于 2023-08-08  发布在  iOS
关注(0)|答案(1)|浏览(108)


嗨,询问一些关于模拟器(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.为什么我的模拟器和真实的设备之间的内存状态不同?

but5z9lq

but5z9lq1#

1.因为使用UIImage(named:)创建的图像会被缓存。
1.因为模拟器不是一个设备。

相关问题