在Swift中填充

hpi*_*que 27 macos ios swift

根据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)