在斯威夫特匀场

根据苹果工程师伊丽莎白·里德“匀场”是当你使用条件编译来重新使用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 { // ... }