2017-06-06 3 views
0

Ich baue ein neues Framework. Das Projekt soll in Swift-Sprache kodiert werden, aber die Kunden, die dieses Framework verwenden, haben die Freiheit, entweder Swift- oder Objective-C-Framework zu verwenden. Die Frage ist, wie fange ich an. Es könnte zahlreiche Fragen sein wieSwift Framework für Swift und Objective C Projekte

  • structs in SWIFT-Code verwenden, aber es kann nicht in Ziel C Rahmen zur Verfügung gestellt werden.
  • optionals fehlen objektive c
  • Auch wenn ich anderen Satz von Dateien für Swift und Objective C schreiben , wie ich sie auf unterschiedliche Rahmenbedingungen unter dem gleichen Projekt Karte .
  • Enums mit anderen als Int als rawValue kann nicht verwendet werden.
  • Tupeln würde

Ich weiß nicht, gab es um diese ein paar Fragen gewesen, aber keine haben keine befriedigende Antwort.

PS - Jeder Link zu einem Tutorial oder ein Blog wäre zu Super hilfreich sein

+0

Sie können auch nicht die volle Funktionalität von enums nutzen. – Mozahler

+0

@Mozahler - Sie haben Recht, aktualisiert die Frage –

Antwort

1

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.

Verwandte Themen