为什么 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
就解决了这个问题,但是后来我想:
为什么 UIImage
不是数据模型类型?
为什么 UIImage
不是 Foundation
的一部分?
有人知道吗?
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 所做的。
我正在开发一款允许用户向数据模型添加图片的应用程序。 (我使用的是 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
就解决了这个问题,但是后来我想:
为什么
UIImage
不是数据模型类型?为什么
UIImage
不是Foundation
的一部分?
有人知道吗?
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 所做的。