Ios 与UIImage相比,传递NSData是否更快
我正在尝试优化我的应用程序的性能。我想知道如果我将UIImage的NSData版本传递给另一个视图控制器,是否会有差异(速度方面) 我正在通过以下代码转换NSDataIos 与UIImage相比,传递NSData是否更快,ios,swift,Ios,Swift,我正在尝试优化我的应用程序的性能。我想知道如果我将UIImage的NSData版本传递给另一个视图控制器,是否会有差异(速度方面) 我正在通过以下代码转换NSData extension UIImage { var uncompressedPNGData: NSData { return UIImagePNGRepresentation(self)! } } 下面是我如何传递图像数据的。正如你所看到的,有很多传球。 自定义照片浏览器选择图像并将其传递
extension UIImage {
var uncompressedPNGData: NSData {
return UIImagePNGRepresentation(self)!
}
}
下面是我如何传递图像数据的。正如你所看到的,有很多传球。
自定义照片浏览器选择图像并将其传递给下一个VC
PHImageManager.defaultManager().requestImageForAsset(self.albumView.phAsset, targetSize: targetSize,
contentMode: .AspectFill, options: options) {
result, info in
dispatch_async(dispatch_get_main_queue(), {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let postVC = storyboard.instantiateViewControllerWithIdentifier("PostVC") as! PostVC
postVC.imageFromPreviousVC = result!
self.navigationController!.pushViewController(postVC, animated: true)
})
}
在PostVC的viewDidLoad中,我将传递的imaged分配给imageView
selectedImageView.image = self.imageFromPreviousVC
如果用户单击图像,图像将缩放到新的VC
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("ZoomedVC") as! ZoomedVC
vc.imageFromPreviousVC = selectedImageView.image!
self.presentViewController(vc, animated: true, completion: nil)
你是通过参考传递的吗??如果是,则发送图像引用会更快,因为要传递NSData,您需要将图像转换为数据,因此在NSData的情况下需要额外的时间。我包含了更多代码,我不认为这是通过引用传递(我怎么知道??)这称为通过引用传递,当您实际传递图像的引用时,在这种情况下,如果您在下一个控制器中更改图像,则上一个控制器的图像也会更改。这就是浅拷贝的概念。所以,我可以说,如果你有图像,那么你应该通过它而不转换。因此,如果它是通过拷贝,而不考虑转换时间,那么通过UIVIZE的NSATATE版本会更快吗?不管你通过图像还是数据,都需要一个时间(如果你考虑没有转换时间)。