#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 уже может справиться с этим должным образом на моей стороне.