Was macht das Linker-Flag -ObjC?

136

Ich habe eine App, die mit und ohne Linker-Flag funktioniert. Ohne das Linker-Flag verhalte ich mich jedoch beim Hinzufügen von Daten zu einer Ansicht ganz anders.

bsarrazin
quelle
1
bensarz, du bekommst ein anderes Verhalten ohne die Linker-Flagge ... Was bedeutet das? Anders wie?
Adil Hussain

Antworten:

158

Dieses Flag bewirkt, dass der Linker jede Objektdatei in die Bibliothek lädt, die eine Objective-C-Klasse oder -Kategorie definiert. Diese Option führt normalerweise zu einer größeren ausführbaren Datei (aufgrund des in die Anwendung geladenen zusätzlichen Objektcodes). Sie ermöglicht jedoch die erfolgreiche Erstellung effektiver statischer Objective-C-Bibliotheken, die Kategorien für vorhandene Klassen enthalten.

Aus diesem technischen Q & A.

Sergio
quelle
2
Toll! Danke dir. Liegt dies daran, dass wir GCC 4.2 als Compiler verwenden? Würde die Verwendung von LLVM GCC 4.2 oder LLVM Compiler 2.0 das Problem lösen? Oder vermische ich Dinge, die nicht gemischt werden sollten?
Bsarrazin
Ich denke, dass das Verhalten bei beiden Compilern gleich ist (außerdem weiß ich nicht, ob es 2 verschiedene Linker gibt) ...
Sergio
4
Bedeutet dies, dass Sie niemals -ObjCetwas anderes als eine Bibliothek / ein SDK benötigen würden ? Dh Sie sollten es niemals in einem tatsächlichen App-Ziel verwenden müssen?
Robert
2
Nein, dies bedeutet, dass Sie -ObjC in jedem Projekt benötigen, das eine Bibliothek implementiert, die eine Kategorie oder ein eingebettetes Framework enthält
arc4randall
Hab es gerade auf die harte Tour herausgefunden!
Alexandre G