2015-06-17 6 views
7

Eine Performance-Frage für Entwickler, die Erfahrung mit dem Hinzufügen von schnell in bestehende Objective-C-Codebasis haben.Objective-C - Swift-Bridging-Performance für existierende Codebase

Meine Prämisse ist: schließlich Bridging-Header.h könnte wirklich groß werden (es könnte alle 1,5k existent Objective-C-Klassen am Ende enthalten (geben oder diese nehmen Klassen, die von Swift) nicht zugegriffen werden kann) und umgekehrt für PRODUCT-Swift.h erzeugt Header.

Ich befürchte, die Kompilierungsleistung könnte drastisch sinken: jedes Mal, wenn eine der enthaltenen Klassen .h geändert hat, muss es alle .swift Dateien neu kompilieren.

Ist das der Fall? Wenn ja, gibt es eine Möglichkeit, die Leistung zu optimieren?

Klärung: Stellen Sie sich vor, dass Sie Ihre gesamte Projektklassen in .pch Datei enthalten, nun jede Klasse Änderung wird Neuübersetzung des gesamten Projekts auslösen. Ist es ähnlich wie Bridging-Header.h funktioniert?

Antwort

1

Wenn Sie eine Menge Abwechslung in den Header-Dateien erwarten, würde ich Module empfehlen. Wenn Sie Ihren Swift-Code in Module aufteilen, von denen jeder über einen eigenen Bridging-Header verfügt, sollten Sie die Swift-Wiederherstellungszeit drastisch reduzieren. Sie werden wahrscheinlich auch Verbesserungen bei den Swift-Wiederherstellungszeiten erzielen, wenn nicht jede interne Funktion im gesamten System berücksichtigt werden muss.

Module scheint zu sein, wo Swift für die Programmorganisation gehen will. Ich sage nicht, dass sie noch sehr stark sind; sie scheinen immer noch ziemlich unordentlich zu sein. Aber sie sind wahrscheinlich das beste Werkzeug für diesen Job. Die gute Nachricht ist, dass Sie Schritt für Schritt migrieren sollten, wenn Probleme auftreten. Sie sollten nicht Ihr gesamtes Projekt auf einmal massiv überarbeiten müssen. Ich würde definitiv nicht empfehlen, am ersten Tag 100 verschiedene Module zu erstellen. Suchen Sie nach ein paar großen, die Ihr Programm gut segmentieren könnten.

+0

Guter Punkt, danke! –

Verwandte Themen