为什么 UIImage 不是 Foundation 框架的一部分?

Why isn't UIImage part of the Foundation framework?

我正在开发一款允许用户向数据模型添加图片的应用程序。 (我使用的是 Realm,但过去我用 CoreData 和 SQLite 做过同样的事情。)我开始使用如下代码构建模型对象:

import Foundation
import RealmSwift

class Picture: Object {
    dynamic var imagePath: NSString = ""

    var image: UIImage {
        get {
            ...
        }
        set(UIImage) {
            ...
        }
    }
}

这当然会产生 Swift 编译器错误:

Use of undeclared type 'UIImage'

加上import UIKit就解决了这个问题,但是后来我想:

有人知道吗?

Why isn't UIImage part of Foundation?

为什么会这样? :)

UIImage class 用于在 iOS(以及扩展的 iOS 系列:watchOS、tvOS...)上呈现图像。对于 macOS,有 NSImage class.

UIImage 不在 Foundation 中是有道理的,因为 Foundation 在所有平台上都是共享的。

此外,图像不是计算系统基础的一部分,而这正是基金会 class 试图解决的问题。

因此处理图像不应该放在 Foundation 中,而应该放在更高级别的 classes 中,可能是针对特定平台的专用图像,这就是 Apple 对 UIImage 和 NSImage 所做的。