2014-02-18 20 views
6

In welcher Weise unterscheidet sich -all_load von -ObjC. In meinem Projekt verhalten sich beide auf die gleiche Weise.Unterschied zwischen -all_load und -ObjC

+0

möglich duplicate von [Was macht die -all \ _load linker flag?] (Http://stackoverflow.com/questions/2906147/what-does-the-all-load-linker-flag-do) – Amar

+1

@ Amar: Bitte verstehe die Frage. Ich frage den Unterschied zwischen beiden Flaggen. – Rajesh

+0

Der Unterschied in ihnen ist über einen Fehler, der in der Antwort von Midhun und auch in der angenommenen Antwort auf die Frage, die ich verknüpft habe, erwähnt wird. Gehen Sie durch die [Apple technische Anmerkung] (https://developer.apple.com/library/mac/qa/qa1490/_index.html), die in dieser Antwort erwähnt wird. – Amar

Antwort

9

-Objc

Dieses Flag bewirkt, daß der Linker jede Objektdatei in der Bibliothek zu laden, die eine Objective-C Klasse oder Kategorie definiert.

-all_load

Für 64-Bit und iPhone OS-Anwendungen, gibt es einen Linker Fehler, die -ObjC von Laden verhindert Objekte Dateien von statischen Bibliotheken, die nur die Kategorien und keine Klassen enthalten. Die Problemumgehung besteht darin, die Flags -all_load oder -force_load zu verwenden. -all_load zwingt den Linker alle Objektdateien zu laden aus jeder Archivierung sieht es, auch solche ohne Objective-C-Code

Referenz Building Objective-C static libraries with categories

+0

Sie haben Recht, beide Flags werden verwendet, um alle Objektdateien zu laden. Aber ich kenne den Unterschied nicht. – Rajesh

+2

@ user1554347: Unterschied ist das 'Für 64-Bit- und iPhone-OS-Anwendungen gibt es einen Linker-Fehler, der verhindert, dass -ObjC Objektdateien aus statischen Bibliotheken lädt, die nur Kategorien und keine Klassen enthalten. Die Problemumgehung ist die Verwendung von "all_load". Es gibt keinen anderen Unterschied, AFAIK. –

+0

Die Referenz bezieht sich nicht mehr auf -all_load, anscheinend weil das Problem, das -all_load erfordert, für eine Weile behoben wurde. –

5

Von man ld ...

-all_load Loads all members of static archive libraries. 
-ObjC  Loads all members of static archive libraries that implement an Objective-C 
       class or category. 

-ObjC nicht zeichnen in allen Symbolen aus allen statischen Bibliotheken wie -all_load wird.