2016-06-14 6 views
20

Просто обновил мой проект до Xcode 8, и я обнаружил эти ошибки в нескольких внешних фреймворках, которые включает мое приложение. Есть ли обходной путь, возможно, касание настроек, чтобы избежать ошибок компиляции?Xcode 8: 'objc_unretainedPointer' недоступен вместо использования __bridge вместо

Это пример ошибки: (Это я не могу изменить, потому что это импортное рамки)

const void * ivarPtr = objc_unretainedPointer(self) + ivar_getOffset(ivar); 
[decoder decodeValueOfObjCType:[ivarInfo[@"encoding"] UTF8String] at:(void *)ivarPtr]; 
+0

Показать строки, вызывающие ошибки и полные сообщения об ошибках. – Droppy

+0

Что такое 'ivar'? Можете ли вы предоставить еще какой-нибудь контекст? – JAL

+0

ivar is Ivar ivar = class_getInstanceVariable (ivarInfo [@ "class"], [ivarName UTF8String]); но я считаю, что это не актуально, так как мало я могу изменить там, потому что мы говорим о коде, что он находится внутри внешней структуры от внешней стороны. – tonik12

ответ

18

Для Xcode 8, он должен быть:

const void * ivarPtr = (__bridge void *)(self) + ivar_getOffset(ivar); 
+0

Это не решает проблему, так как это происходит во внешней структуре, которую я не могу изменить. – tonik12

+0

@ user2461338 Итак, вы ищете решение, которое не требует изменений кода? – Droppy

+0

Я считаю, что это единственный способ. Если нет, я буду рад услышать. – tonik12

2

Вы можете просто Заменить objc_unretainedPointer(self) на (__bridge void *) (self)