Я видел этот трюк для реализации независимого от платформы интерфейса (скажем) для классов изображений UIImage/NSImage:
#if os(iOS)
import UIKit
typealias Image = UIImage
#elseif os(macOS)
import Cocoa
typealias Image = NSImage
#endif
Теперь я пытаюсь принять его в рамках. Скажем, у меня есть такой класс:
public final class MyClass {
public var image: Image // < Compiler Error (see below)
init?(imageURL: URL) {
guard let image = Image(contentsOf: imageFileURL) else {
return nil
}
self.image = image
}
}
Я получаю сообщение об ошибке:
Свойство нельзя объявить открытым, так как его тип использует внутренний тип
Относится ли «внутренний тип» к NSImage? Как это обойти?
Примечание. Я не думаю, что это дубликат этот вопрос: я использую < strong>typealias, неясно, какое объявление я должен пометить как "общедоступное".