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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.