在斯威夫特匀场
根据苹果工程师伊丽莎白·里德“匀场”是当你使用条件编译来重新使用iOS和OS X之间的代码。例如:
#if TARGET_OS_IPHONE @import UIKit; #define BaseView UIView #else @import AppKit; #define BaseView NSView #endif @interface MyView : BaseView @end
在WWDC 2014会议中, 在iOS和OS X之间共享代码,她还指出:
如果你从字面上翻译你将用Objective-C来填充的话,这将不能在Swift中编译。
有很多方法可以在Swift中填充你的代码。
但是它比我们在Objective-C中可以使用的基本条件编译要复杂得多。
那么,哪种方法可以在Swift中“填充代码”呢?
在Swift中看起来像这样:
#if os(iOS) import UIKit typealias BaseClass = UIView #else import AppKit typealias BaseClass = NSView #endif // class MyClass : BaseClass { // ... }