Что делает флаг компоновщика -all_load?

Я не могу найти нигде, что делает флаг -all_load при компиляции кода Objective-C.

У меня есть некоторые проблемы с загрузкой двоичных файлов в Apple, они говорят это, потому что я не использовал этот флаг, но мой код компилируется даже без него.

Может кто-нибудь мне помочь?

Спасибо

Ответ 1

Это, вероятно, связано с этой технической запиской https://developer.apple.com/library/content/qa/qa1490/_index.html

ВАЖНО: для 64-битных приложений и приложений для iPhone OS существует ошибка компоновщика, которая не позволяет -ObjC загружать файлы объектов из статических библиотек, которые содержат только категории и не содержат классов. Обходной путь должен использовать флаги -all_load или -force_load. -all_load заставляет компоновщик загружать все объектные файлы из каждого архива, который он видит, даже без кода Objective-C. -force_load доступен в Xcode 3.2 и позже. Это позволяет лучше контролировать загрузку архива. Каждый параметр -force_load должен сопровождаться путем к архиву, и каждый объектный файл в этом архиве будет загружен.

Ответ 2

"-all_load заставляет компоновщик загружать все объектные файлы из каждого архива, который он видит, даже те, которые не содержат код Objective-C". Этот вывод представляется неверным. Когда я определяю функцию C в файле исходного кода, но я нигде не использовал ее. После этого я связываю свое приложение с флагами -all_load. и функция C до сих пор не включена в приложение.