ich das tat und bekam einige unerwartete Ergebnisse: ich Schwierigkeiten haben, den Rahmen in Swift-Anwendung zu integrieren. Objective-C funktioniert gut. Sie haben hier einige der Vorbehalte erwähnt.
Ich schlage vor, dies iterativ beim Schreiben der Test-Anwendung in Objective-C, die alle Funktionen verwendet. Auf diese Weise wird es, wenn es ein Feature gibt, das die Swift-Objective-C-Grenze nicht gut kreuzt, so früh wie möglich entdeckt.
Ihre Bemerkungen zu Problemen sind im Allgemeinen korrekt mit einer kleinen Ausnahme: Optionale fehlen nicht in Objective-C, sie erscheinen als nullable/nonnull
Modifizierer für Variablen und Methodenparameter. Obwohl dies die Optionale nicht vollständig ersetzt, können Probleme frühzeitig erkannt werden.
Hier ist eine zufällige Liste von einigen anderen Fragen, die ich entdeckt:
Bridging zwischen Swift Error
und NSError
in Objective-C verwendet. Die Konvertierung ist nicht immer so glatt wie sie sein könnte, also verwenden Sie besser NSError
im exportierten Code.
Wenn Sie Objective-C und Swift in Ihrem Framework mixen, können Sie keine Bridging-Header verwenden, sondern Modulmap Dateien, die dazu neigen, ziemlich groß und komplex zu werden.
Da Sie Frameworks nicht in einem Framework einbetten können, müssen Sie sicherstellen, dass die Anwendung ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
Flag für das Ziel setzt. Dies muss in der Dokumentation deutlich angegeben werden. Wenn Sie eine Fat-Bibliothek für Ihr Framework erstellen, müssen Sie diese Dateien aus dem verteilten SDK entfernen.
Und wie ich eingangs sagte, habe ich immer noch keinen Erfolg mit dem resultierenden gemischten Sprachrahmen in Swift-Anwendung.
Hoffe, dies wird zu Ihrer Liste von Dingen hinzufügen, die bei der Entwicklung der Bibliothek berücksichtigt werden.
Sie können auch nicht die volle Funktionalität von enums nutzen. – Mozahler
@Mozahler - Sie haben Recht, aktualisiert die Frage –