MAIKit 71.0.0

MAIKit 71.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015 年 9 月

Michael Buckley 维护。



MAIKit 71.0.0

MAIKit (Mac and iOS Kit) 是一个用于在 OS X 和 iOS 间共享代码的框架。

UIKit 包含了许多在 Appkit 中有对应器的类。这些类包含了许多相同的方法和属性,但不完全是。例如,UIColor 和 NSColor 几乎相同,但 NSColor 包含从校准值和设备值创建颜色的构造器,而 UIColor 不包含,UIColor还有一个 CIColor 属性,而NSColor 没有这个属性。

许多项目使用 @compatibility_alias 将 UIColor 别名到 NSColor 以在 iOS 和 OS X 应用间共享代码。然而,这种方法有一些缺点。其中一个缺点是仍然有可能编写和编译只能在一种平台上运行的代码。例如,以下代码可以为 iOS 编译,但不能为 OS X 编译。

let ciColor = NSColor.blackColor().CIColor

当然,这个错误会在代码下次编译为 OS X 时被捕获,但不断为两个平台编译会减慢开发速度。此外,纠正问题的速度比预防问题的速度慢,当在团队工作时,如果构建错误在没有修复之前就已经提交,可能会阻止其他团队成员完成工作,直到它被修复。@compatibility_alias 方法还向自动完成暴露平台特定的方法和属性,将责任留给开发人员记住哪些 API 在两个平台上可用,以及哪些 API 不可用。

MAIKit 旨在防止这些问题,加速跨平台开发。它是通过定义包含 UIKit 和 AppKit 类方法与属性交集的协议来做到这一点的。它还定义了实现这些协议的类,可以在 iOS 和 OS X 代码中使用。这些类从它们的 UIKit 和 Appkit 对应类继承,并且可以安全地进行子类化。

继续 NSColor 的例子,MAIKit 定义了一个名为 MAIColor 的类和一个名为 MAIColorProtocol 的协议。这个模式适用于所有 UIKit 和 AppKit 类。

在声明变量时,您需要在 Swift 中将它们声明为 MAIKit 定义协议,或者在符合这些协议的 Objective-C 对象中进行声明。但是,您不能实例化协议,因此您需要使用 MAIKit 定义类对其进行初始化。

let maiColor : MAIColorProtocol = MAIColor.blackColor()
let cgColor = maiColor.CGColor
id<MAIColorProtocol> maiColor = [MAIColor blackColor];
CGColorRef cgColor = [maiColor CGColor];

示例

MAIKit/Examples 文件夹包含一个示例项目,它演示了如何子类化视图和 viewcontrollers 以及如何在大多跨平台代码中处理事件。

如果您想贡献其他示例,请发起一个拉取请求。我将很高兴包括它们。

版本号

MAIKit致力于保持与语义化版本控制的兼容性,只在主版本中引入API不兼容的更改。因为iOS SDK版本通常与Xcode版本相关联,所以MAIKit的主版本变更与Xcode主线或次版本变更同步。MAIKit的次版本对应于Xcode的补丁版本,而MAIKit的补丁版本独立于Xcode版本。

例如,包含iOS SDK 9.0和OS X SDK 10.10的Xcode 7.0.0对应于MAIKit版本70.0.x。如果MAIKit在Xcode 7.0.0的生命周期内发布3个版本,则MAIKit版本号为70.0.2。如果随后发布带有次要API更改的Xcode 7.0.1,MAIKit将在这版次中包含这些变更,版本号为70.1.0。当Xcode 7.1.0发布时,MAIKit的版本号将提高到71.0.0。

在Xcode测试版期间,MAIKit可能在不增加主版本号的情况下引入不兼容的API变化,因为带有相同版本号的Xcode构建可能引入破坏API的变化。

安装

许可证

MAIKit遵循MIT许可证发布。