Xcode: Welche Dateien müssen Mitglieder meines Ziels sein? (Zielmitgliedschaft)

8

Ich entwickle eine iPhone App in Xcode 4.6.2, die nur ein Ziel hat, und ich habe bemerkt, dass einige wichtige Dateien nicht zu meinem Ziel gehören. Keine meiner benutzerdefinierten Header-Dateien sind Teil der Zielmitgliedschaft, noch ist meine Info.plist, mein Präfix-Header oder das Produkt "MyApp.app."

So wie ich Ziele verstehe, müssen diese Dateien sicherlich Mitglieder des Ziels sein.

Meine Frage ist: Warum sind diese Dateien nicht Mitglieder meines Ziels?

Nach der Suche auf SO haben ähnliche Fragen einige Einblicke geliefert, aber keine vollständige Antwort auf diese Frage. Die Einsicht, die ich gesammelt habe, ist:

  1. Header-Dateien sind keine Mitglieder Ihres Ziels, da sie in der Build-Phase "Copy Headers" verlinkt werden.

    • Das hört sich vernünftig an, aber ich habe keine Kopierkopf-Build-Phase
  2. Info.plist und Prefix.pch sind keine Mitglieder des Ziels, da Info.plist in der Buildphase "Bundle-Ressourcen kopieren" verknüpft wird und Info.plist einen Schlüssel / Wert-Eintrag enthält, der auf den Präfix-Header zeigt (Prefix.pch)

    • Ich bin nicht davon überzeugt, dass dies tatsächlich funktioniert
T Blank 07.08.2013, 21:48
quelle

3 Antworten

12

Headerdateien sind das, worauf andere Quelldateien verweisen, damit sie wissen, was die Schnittstelle für eine Klasse ist. Sie werden nicht als Teil der Binärdatei selbst benötigt, daher müssen sie nicht im Endprodukt enthalten sein.

Info.plist ist ein Sonderfall, da es das Anwendungsbündel selbst definiert und daher separat verarbeitet wird.

Im Allgemeinen möchten Sie, dass Dateien Mitglieder Ihres Ziels sind, wenn sie:

  • Teil der ausführbaren Datei (z. B. Implementierung ( .m ) Dateien oder Bibliotheken) oder
  • Sind als Dateien im Anwendungspaket enthalten (z. B. Bilder).

Sie benötigen keine Dateien als Mitglieder Ihres Ziels, wenn sie nur als Teil des Build-Prozesses verwendet werden und nicht zur Laufzeit benötigt werden. Dies ist normalerweise jede Art von Headerdatei, einschließlich vorkompilierter Header ( .pch ).

    
Jim 07.08.2013, 22:02
quelle
3

Header müssen nur für ein Framework-Ziel kopiert werden, und nur, weil sie Teil der Framework-Version sind (sie ermöglichen Benutzern, zu wissen, wie das Framework verwendet wird). Apps benötigen keine Header, da sie als eigenständige Entitäten kompiliert werden. Die Header (und die PCH-Datei) werden während der Kompilierung verwendet, sind aber zur Laufzeit nicht erforderlich.

Die info.plist wird anders behandelt. Es kann normalerweise nicht einfach kopiert werden, da es im Projekt normalerweise nicht "Info.plist" heißt. Es ist auch zwingend erforderlich, dass die Datei in der App existiert, so dass Xcode Ihnen nicht die Möglichkeit bietet, sie nicht einzubeziehen.

    
Wain 07.08.2013 22:02
quelle
2

Nur .m Dateien und Ressourcendateien sind Teil der Ziele, nicht .h .

Sie haben Recht: Die Info.plist-Dateien und die Header werden alle in den Build-Einstellungen referenziert (die wiederum zielspezifisch sind).

    
Mundi 07.08.2013 22:00
quelle

Tags und Links