1. 程式人生 > >坑:OC裡面寫的屬性和方法在swift裡面無法訪問

坑:OC裡面寫的屬性和方法在swift裡面無法訪問

背景: 專案裡面OC寫的檔案有個block屬性要在swift裡面訪問, 但是在swift裡面怎麼都無法訪問到屬性, 然後把block屬性加到oc的方法引數裡面,連方法也不能訪問了. 

思考: 第一直覺猜的是swift不支援oc的block了,但是仔細一想沒有道理, 就新建了一個專案, 居然可以訪問block屬性和方法, 然後機智的想, 唯一的區別就是block的引數型別, 一個是自定義的, 一個是系統自帶的, 然後一看oc的標頭檔案, 用的是@class, 這個時候反應過來了, 多半是這裡的問題, 把@class換成#import, 搞定可以訪問了.

總結:@class是標識有這麼個類但是沒有類的詳細資訊, #import包含了類的完整資訊, swift是橋接來訪問oc檔案的, 在橋接檔案裡面沒有加別的import所以這個@class表示的類, 找不到, 這才是原因. 換成import後了, swift本來橋接了模板oc檔案當然就可以訪問了. 寧外測試發現雖然oc裡面可以訪問這個block和方法, 但是一旦要呼叫那個自定義型別的屬性的時候依然是卵的, 所以還是要import那個檔案.