Co robi flaga konsolidatora -ObjC?

136

Mam aplikację, która działa z flagą konsolidatora i bez niej. Jednak bez flagi konsolidatora uzyskuję zupełnie inne zachowanie podczas dodawania danych do widoku.

bsarrazyna
źródło
1
bensarz, masz inne zachowanie bez flagi konsolidatora ... Co to znaczy ?? Jak inaczej?
Adil Hussain

Odpowiedzi:

158

Ta flaga powoduje, że konsolidator ładuje każdy plik obiektowy w bibliotece, która definiuje klasę lub kategorię Objective-C. Chociaż ta opcja zazwyczaj skutkuje większym plikiem wykonywalnym (ze względu na dodatkowy kod obiektowy załadowany do aplikacji), pozwoli to na pomyślne utworzenie efektywnych bibliotek statycznych Objective-C, które zawierają kategorie w istniejących klasach.

Z tego pytania technicznego

sergio
źródło
2
Wspaniały! Dziękuję Ci. Czy jest to spowodowane faktem, że używamy GCC 4.2 jako kompilatora? Czy użycie LLVM GCC 4.2 lub LLVM Compiler 2.0 rozwiązałoby problem? A może mylę rzeczy, których nie powinno się mieszać?
bsarrazin
Myślę, że zachowanie jest takie samo dla obu kompilatorów (poza tym nie wiem, czy są 2 różne linkery) ...
sergio
4
Czy to oznacza, że ​​nigdy nie będziesz potrzebować -ObjCniczego innego niż biblioteka / SDK? Czyli nigdy nie powinieneś używać go w rzeczywistym celu aplikacji?
Robert
2
Nie, oznacza to, że potrzebujesz -ObjC w każdym projekcie implementującym bibliotekę, która ma kategorię lub osadzony framework
arc4randall
Właśnie odkryłem to na własnej skórze!
Alexandre G