Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 与UIImage相比,传递NSData是否更快_Ios_Swift - Fatal编程技术网

Ios 与UIImage相比,传递NSData是否更快

Ios 与UIImage相比,传递NSData是否更快,ios,swift,Ios,Swift,我正在尝试优化我的应用程序的性能。我想知道如果我将UIImage的NSData版本传递给另一个视图控制器,是否会有差异(速度方面) 我正在通过以下代码转换NSData extension UIImage { var uncompressedPNGData: NSData { return UIImagePNGRepresentation(self)! } } 下面是我如何传递图像数据的。正如你所看到的,有很多传球。 自定义照片浏览器选择图像并将其传递

我正在尝试优化我的应用程序的性能。我想知道如果我将UIImage的NSData版本传递给另一个视图控制器,是否会有差异(速度方面)

我正在通过以下代码转换NSData

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版本会更快吗?不管你通过图像还是数据,都需要一个时间(如果你考虑没有转换时间)。