根据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
Run Code Online (Sandbox Code Playgroud)
在WWDC 2014会话中,在iOS和OS X之间共享代码,她还声明:
如果您真的翻译了如何使用Objective-C进行填充,则无法在Swift中进行编译.
有一些方法可以在Swift中填充代码.
但它比我们可以在Objective-C中使用的基本条件编译更复杂.
那么,哪些是在Swift中"填充你的代码"的方法呢?
hol*_*lex 33
在Swift中看起来像这样:
#if os(iOS)
import UIKit
typealias BaseClass = UIView
#else
import AppKit
typealias BaseClass = NSView
#endif
//
class MyClass : BaseClass {
// ...
}
Run Code Online (Sandbox Code Playgroud)