Как автор фреймворка, я был заинтригован, когда Дейв Делонг передал мне эту ссылку.
Оказывается, это не из-за Xcode 4, а из-за изменений в iOS 4.3 SDK (икстати, 10,7 SDK тоже).Я использовал макрос OBJC_EXPORT
с __attribute__((visibility("hidden")))
(для которого я определил макрос с именем HIDDEN
).Это не было проблемой, пока 4.3 / 10.7 не изменило определение макроса OBJC_EXPORT
в /usr/include/objc/objc-api.h
...
Раньше он был определен как OBJC_EXTERN
, но теперь он определен как OBJC_EXTERN OBJC_VISIBLE
,который разрешается до OBJC_EXTERN __attribute__((visibility("default")))
.Таким образом, мои объявления, в которых использовался HIDDEN OBJC_EXPORT
, внезапно начали преобразовываться в:
__attribute__((visibility("hidden"))) OBJC_EXTERN __attribute__((visibility("default")))
По сути, причиной появления ошибок были противоположные атрибуты видимости.(Готово, сражайтесь!)
Я только что протестировал и зафиксировал исправление, которое заменяет HIDDEN OBJC_EXPORT
на HIDDEN
.Очевидно, эти символы не нужно было объявлять как extern
, так как они работают без этих макросов.
Итак, краткий ответ на ваш вопрос: обновление до версии 710.; -)