2015-03-01 13 views
19

-Sharing-Klasse zwischen iOS-App und Erweiterung App-Sharing-Code zwischen Original iOS App und App-Erweiterung

Ich möchte meine beiden App und die Erweiterung App eine benutzerdefinierte Klasse verwenden. Wenn ich die Klasse nur im App-Hauptordner habe, wird sie von der Erweiterung nicht erkannt. Ich habe versucht, eine Kopie davon zu machen und es in den Erweiterungsordner zu legen, aber ich bekomme natürlich einen invalid redeclaration of [my class] Fehler. Was ist die beste Lösung dafür? Es ist nur eine Klasse, nicht mehrere Ressourcen.

Antwort

31

Nichts sollte kopiert werden. Fügen Sie einfach benötigten Dateien Quellen für Ihre Erweiterung zu kompilieren:

enter image description here

+1

Danke zu teilen! Das sieht gut aus! Wie steht es mit dem Erstellen eines Frameworks? –

+2

@RubenMartinezJr. Beim Erstellen eines Frameworks wird Ihre Klasse nicht für jedes Ziel separat erstellt. aber wird es einmal tun und zu jedem Ziel verlinken. –

+0

@RubenMartinezJr. Auf keinen Fall. Sie teilen nur den Code zwischen App und Erweiterung. Sie werden separat zusammengestellt. So können Sie zum Beispiel #ifdef SOME_EXTENSION_FLAG ... #endif verwenden, um einige Teile des Codes während der Kompilierung für die App oder für die Erweiterung zu deaktivieren. – Avt

13

nur sicherstellen, dass die Dateien, die Sie teilen möchten eine Zecke erhalten Sie im Abschnitt Ziel Mitgliedschaft.

Wählen Sie Ihre Datei aus, öffnen Sie das rechte Dienstprogrammfeld, das sich auf der rechten Seite befindet, und kreuzen Sie an.

enter image description here

+1

Nur um ein bisschen mehr Einblick zu geben, fügt man auf diese Weise die Klasse automatisch zu 'Compile Sources' unter' Build Phases' hinzu. – Burak

+0

das ist was ich vermisste, es ist wirklich einfach. –

1

Embedded-Frameworks ist eine gute Möglichkeit, Code zwischen der Anwendung und Ihrer Erweiterung wieder zu verwenden. Nachdem wir einen Teil des Codes in eingebettete Frameworks verschoben haben, werden wir eine großartige Gelegenheit haben, um einige Unit-Tests herum zu schreiben.

Siehe Abschnitt ein Embedded-Framework-Code https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1