Почему флаг компоновщика -ObjC необходим для связывания категорий в статических библиотеках? (LLVM)

Относительно этого технического вопроса и ответа от Apple:http://developer.apple.com/library/mac/#qa/qa1490/_index.html

Думаю, компилятор мог бы пометить вызовы методов, определенных в категориях во время компиляции (он знает, что они были определены в категории, а не в основном классе, потому что прототип находился в разделе @interface Class (Category)), поэтому он мог построить таблица в объектных файлах "внешних методов категории". Затем компоновщик, выполнив обычную компоновку, должен иметь возможность конкатенировать/объединять и обрабатывать таблицы "внешних методов категории" из всех объектов и искать совпадающие символы в соответствующем классе категории из всех связанных фреймворков/библиотек/объектов, тогда он может извлечь те, которые еще не были «в» цели.

Должны быть что-то я упускаю, но что это? Почему это невозможно?

10
задан jhabbott 18 June 2012 в 20:31
поделиться