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