ALAsset 和 PHAsset 有啥区别?

Posted

技术标签:

【中文标题】ALAsset 和 PHAsset 有啥区别?【英文标题】:What is the difference between ALAsset and PHAsset?ALAsset 和 PHAsset 有什么区别? 【发布时间】:2015-11-16 01:40:06 【问题描述】:

今天早上我对PHAsset 感到好奇。上个月我曾经和ALAsset打过交道。我从 Apple 网站下载了一个 ios 项目,该项目使用 ALAsset 制作了一个简单的类似 iOS 照片的应用程序,我对其进行了修改以添加更多功能以成为更像 iOS 照片的应用程序。然后我的老板处理了我的项目并告诉整个办公室我应该接受培训,他必须重新编写整个项目,因为我的代码大多已经过时了(可能是因为使用了ALAsset?)。我的老板在 iOS 上非常好,我看到了他的代码,他正在使用 PHAsset

那么ALAssetPHAsset 有什么区别?我还在 Apple/iOS 论坛上看到了一个帖子,PHAsset 是新的,ALAsset 是旧的。

另外,我想知道两者之间哪个更好,在将元数据写入图像时,这两个更容易使用。

我是iOS新手(2个月),我可以看到PHAssetALAsset都来自NSObject

https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAsset_Class/index.html

https://developer.apple.com/library/prerelease/ios/documentation/AssetsLibrary/Reference/ALAsset_Class/index.html

【问题讨论】:

我喜欢这个问题带有一个小故事。 谢谢。 :) 当我发布这个问题时,我还是个新手 :) 我以前从未接受过培训。 【参考方案1】:

正如您从两个类的参考文档中看到的那样,它们来自两个不同的框架。

PHAsset 来自较新的照片框架(在 iOS 8.0 中添加)。

ALAsset 来自最初的 AssetsLibrary 框架。

如果您的应用的部署目标是 iOS 8.0 或更新版本,您应该使用更新的框架。如果您的应用需要支持 iOS 7 或更早版本,请仅使用较旧的 AssetsLibrary 框架。

在这种情况下,哪个更容易的问题无关紧要。如果可能,请使用较新的。 Apple 始终鼓励使用最新的框架、库、操作系统、硬件等。

您还会注意到整个 AssetsLibrary 框架已被弃用。这意味着它已经过时了。它仍然有效,但不鼓励使用它以支持较新的库。

【讨论】:

是的!!!非常感谢您的澄清。 :) 现在我知道为什么我的老板说我的代码已经过时了。

以上是关于ALAsset 和 PHAsset 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

获取 PHAsset 的本地文件路径

iOS 8 照片框架:从 PHAsset 获取文件名

PHAsset,如何在应用重启后检索特定的 PHAsset 对象(ios8 Photos)

int和integer有啥区别

iOS PhotoKit框架 详解

iOS PhotoKit 教程