Ответ 1
который будет выглядеть в Swift:
#if os(iOS)
import UIKit
typealias BaseClass = UIView
#else
import AppKit
typealias BaseClass = NSView
#endif
//
class MyClass : BaseClass {
// ...
}
По словам инженера Apple Элизабет Рид "shimming" - это когда вы используете условную компиляцию для повторного использования кода между 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 {
// ...
}