Dlaczego flaga linkera -ObjC jest potrzebna do łączenia kategorii w bibliotekach statycznych? (LLVM)
Odnośnie tego technicznego pytania i odpowiedzi od Apple: http://developer.apple.com/library/mac/#qa/qa1490/_index.html
Myślę, że kompilator może oznaczać wywołania metod zdefiniowanych w kategoriach w czasie kompilacji (wie, że zostały zdefiniowane w kategorii, a nie w klasie głównej, ponieważ prototyp był w@interface Class (Category)
sekcja) - aby mógł zbudować tabelę w plikach obiektowych „zewnętrznych metod kategorii”. Następnie linker, po wykonaniu normalnego połączenia, powinien być w stanie połączyć / scalić i przetworzyć tabele „metod kategorii zewnętrznej” ze wszystkich obiektów i szukać pasujących symboli w dopasowywaniu kategorii klas ze wszystkich połączonych struktur / bibliotek / obiektów, a następnie może przyciągnąć te, które nie były już „w” celu.
Musi być coś, czego brakuje, ale co to jest? Dlaczego to nie jest możliwe?