Настройка в Swift

#ios #macos #swift

#iOS #macos #быстрый

Вопрос:

По словам инженера Apple Элизабет Рейд, «перестановка» — это когда вы используете условную компиляцию для повторного использования кода между 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?

Комментарии:

1. взгляните на это: developer.apple.com/library/prerelease/ios/documentation/Swift /… , особенно операторы условной компиляции . это может быть ответом на ваш вопрос.

2. @holex Из того же документа: «В отличие от операторов компиляции условий в препроцессоре C, операторы условной компиляции в Swift должны полностью окружать блоки кода, которые являются автономными и синтаксически допустимыми». При перечитывании я думаю, что именно это Рейд мог иметь в виду под «более сложным».

Ответ №1:

в Swift это выглядело бы так:

 #if os(iOS)
    import UIKit
    typealias BaseClass = UIView
    #else
    import AppKit
    typealias BaseClass = NSView
#endif

//

class MyClass : BaseClass {

    // ...

}
 

Комментарии:

1. Аккуратно. Не думал typealias . Не могу заставить его работать на игровой площадке, но попробую позже в проекте.

2. Я никогда не пользовался игровой площадкой, но в проекте Xcode6 beta2 уже может справиться с этим должным образом на моей стороне.