根据Apple工程师Elizabeth Reid" shimming"当您使用条件编译在iOS和OS X之间重用代码时。例如:
#if TARGET_OS_IPHONE
@import UIKit;
#define BaseView UIView
#else
@import AppKit;
#define BaseView NSView
#endif
@interface MyView : BaseView
@end
在2014年WWDC会议Sharing code between iOS and OS X中,她还说:
如果您真的翻译了如何使用Objective-C进行填充,那么这就是 不会在Swift中编译。
有很多方法可以在Swift中填充你的代码。
但它比你的基本条件编译更复杂 我们可以在Objective-C中使用。
那么,这是什么方法来#sh;你的代码"在斯威夫特?
答案 0 :(得分:33)
在 Swift 中看起来像这样:
#if os(iOS)
import UIKit
typealias BaseClass = UIView
#else
import AppKit
typealias BaseClass = NSView
#endif
//
class MyClass : BaseClass {
// ...
}