string s = o as string; // 2
предпочтен, поскольку это избегает потери производительности двойного кастинга.
Мы столкнулись с той же проблемой (в версии 3.0 -ObjC больше не связывается по категориям) в рамках Core Plot framework . Все, что я могу сказать, это то, что мы смогли добавить параметр -all_load к другим флагам компоновщика в целевом приложении, и это устранило ошибки времени выполнения. Мы не видели никаких предупреждений о повторяющихся символах.
Я отправил отчет об ошибке для поведения компоновщика, как, я уверен, есть у других.
Когда вы добавляете -all_load к другим флагам компоновщика, убедитесь, что все фреймворки, используемые библиотекой, связаны с вашим целевым приложением. В противном случае он не скомпилируется. В моем случае у меня была Категория для MKMapView, и я не связывал MapKit Framework с моим целевым приложением, поэтому класс, к которому принадлежит категория, не был найден во время сборки.
Я столкнулся с той же проблемой "повторяющихся символов". Без флага -all_load
нам также пришлось включить все библиотеки, с которыми связана наша библиотека, в строку ссылки приложения. Удаление их из строки ссылок приложения решило проблему.
Это ошибка, вызванная попыткой исправить другую ошибку с помощью взлома. Исправление -all_load для ошибки категории - это полный взлом.
Подробнее см. здесь .