1. 程式人生 > >徹底解決:@synthesize of 'weak' property is only allowed in ARC or GC mode :問題

徹底解決:@synthesize of 'weak' property is only allowed in ARC or GC mode :問題

現在的專案是手動記憶體管理,所以在引入第三方資源庫時候,很多資源庫更新以後都開始使用arc進行編碼,這樣就導致兩種程式碼風格不一致,有的時候可能開發者也沒有注意到這些問題,反正用的時候也沒有報錯,就直接使用了;但是有的時候,因為arc編碼中用到了新的屬性修飾符,例如weak,這時候在手動管理記憶體的程式碼中就不能編譯通過,報錯的內容就是:@synthesize of ‘weak’ property is only allowed in ARC or GC mode,這就是引入的arc程式碼在專案中的衝突,有一種解決辦法就是把資原始碼中的weak修飾符改為assign,但是這種方法畢竟是把別人寫的程式碼給改了,有的時候往往會出現閃退、崩潰的問題。

比較好的解決辦法就是專案配置檔案->Build Phrases->Complie Sources,找到出現問題的資源庫檔案(比如weak修飾符所在的檔案),雙擊Complie Files中的該檔案,在空白行中寫入-fobjc-arc,這樣就可以有效防止該衝突。反過來有的時候,在arc程式碼中引入手動管理記憶體的程式碼,我們在Complie Files中為新增的資原始檔增加-fno-objc-arc,這樣就避免了手動管理記憶體的程式碼在arc程式碼中的衝突。