2016-06-14 52 views
20

剛剛更新我的項目到Xcode 8,我發現這個錯誤在我的應用程序包括多個外部框架。有沒有解決方法,也許觸摸設置,以避免此編譯錯誤?Xcode 8:'objc_unretainedPointer'is unavailable使用__bridge cast代替

這是一個錯誤例如:(那我不能修改,因爲它是一個進口框架)

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)