Iphone 在CALayer中使用UIImage是否会影响性能?

Iphone 在CALayer中使用UIImage是否会影响性能?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我使用了一大堆Calayer,创建了一个基于平铺的图像,这与GoogleMaps相同,但细节不同 我使用的代码是: UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; obj.layerToAddTo.conte

我使用了一大堆Calayer,创建了一个基于平铺的图像,这与GoogleMaps相同,但细节不同

我使用的代码是:

UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
obj.layerToAddTo.contents = [image CGImage];
[CATransaction commit];
我真的不想使用CoreGraphics从文件中加载CGImage,因为我很懒。但如果有一个大的性能提升,我会的!LoadImage只需修改一个字符串以获得加载所述图像的正确路径,而obj是一个NSObject结构,它保存了我需要的该线程的所有信息


帮助?

性能没有大的提升-如果有什么不同的话,那就是相反的。通过使用UIImage来加载图像,您将获得缓存为您带来的所有好处,并且它将是一种非常快速的工具,可与各种Calayer一起使用。

性能没有大的提升-如果有什么不同的话。通过使用UIImage来加载图像,您将获得缓存为您带来的所有好处,并且它将是一种非常快速的工具,可与各种Calayer一起使用。

我没有明确的答案,但我猜您在使用UIImage时会看到加载时间比使用CGImage时慢。使用CGImage,可以在创建过程中指定图像类型jpg或png,但使用UIImage,需要动态确定对象类型。诚然,这可能与查看图像文件的前几个字节一样简单,但可能并非如此


一旦图像被实际使用,我不会想象使用内部表示UIImage的CGImage与使用您自己创建的CGImage之间会有任何区别。我认为它们完全相同。

我没有明确的答案,但我猜使用UIImage时的加载时间会比使用CGImage时慢。使用CGImage,可以在创建过程中指定图像类型jpg或png,但使用UIImage,需要动态确定对象类型。诚然,这可能与查看图像文件的前几个字节一样简单,但可能并非如此


一旦图像被实际使用,我不会想象使用内部表示UIImage的CGImage与使用您自己创建的CGImage之间会有任何区别。我认为它们完全相同。

我只是尝试了这个方法,使用纯CoreGraphics加载图像,而不是使用UIImage,在一次加载多个图像时,速度得到了显著提高。

我只是尝试了这个方法,并使用纯CoreGraphics加载图像,而不是使用UIImage加载图像,在一次加载多个图像。

我刚刚尝试了这个方法,使用纯CoreGraphics加载图像而不是使用UIImage,在一次加载多个图像时,速度明显提高


你是如何避免使用UIImage的?或者更准确地说,如何将图像文件直接加载到CoreGraphics中而不通过UIImage?

我刚刚尝试了这个方法,使用纯CoreGraphics加载图像而不是使用UIImage,在一次加载多个图像时,速度有了显著提高


你是如何避免使用UIImage的?或者更准确地说,如何将图像文件直接加载到CoreGraphics中而不通过UIImage?

不使用UIImage-ImageName:加载图像的一个原因是它们存储在内部缓存中,并且在内存不足的情况下缓存未被清除。

不使用UIImage-ImageName:加载图像的一个原因是它们是存储在内部缓存中,并且该缓存在内存不足的情况下不会被清除。

关于第一点,检测PNG和JPG之间的差异几乎是瞬间的。每种类型的文件前面都有魔法代码,可以进行快速比较以确定它是什么类型。是的,这就是我所指的,但我的重点是,我不知道苹果公司的文件类型确定是什么,所以我不能肯定地说他们就是这样确定的。哦,很明显,根据图像类型的不同,加载时间或首次渲染时间会有很大的差异。有些图像类型的解码速度比其他图像快。关于第一点,检测PNG和JPG之间的差异几乎是瞬间的。每种类型的文件前面都有魔法代码,可以进行快速比较以确定它是什么类型。是的,这就是我所指的,但我的重点是,我不知道苹果公司的文件类型确定是什么,所以我不能肯定地说他们就是这样确定的。哦,很明显,根据图像类型的不同,加载时间或首次渲染时间会有很大的差异。有些图像类型的解码速度比其他图像快。我想补充一点,Shark是你的朋友。如果您想了解如何提高代码性能,请使用pro
把它归档,看看它到底在哪里消磨时间,而不是在黑暗中刺伤。我只想补充一句,鲨鱼是你的朋友。如果您想知道在哪里可以提高代码性能,请对其进行分析,并了解它在哪里实际花费了时间,而不是在黑暗中冒险。-1缓存在内存不足的情况下被清除。它很可能在内部使用NSCache,它处理许多内存场景。请参阅NSCache上的文档…-1缓存在内存不足时被清除。它很可能在内部使用NSCache,它处理许多内存场景。请参阅NSCache上的文档。。。