Swift中的指針

1、UnsafePointer

  • Swift本身從設(shè)計上來說是一門非常安全的語言,在Swift的思想中,所有的引用或者變量的類型都是確定并且正確對應(yīng)它們的實際類型的,你應(yīng)該無法進行任意的類型轉(zhuǎn)化,也不能直接通過指針做出一些出格的事情。這種安全性在日常的程序開發(fā)中對于避免不必要的bug,以及迅速而且穩(wěn)定的找出代碼錯誤是非常有幫助的。但是凡事都有兩面性,在高安全的同時,Swfit也相應(yīng)的喪失了部分的靈活性。UnsafePointer就是Swift中專門針對指針的轉(zhuǎn)換。
  • 對于其他的C中基礎(chǔ)類型,在Swift中對應(yīng)的類型都遵循統(tǒng)一的命名規(guī)則:在前面加上一個字母C并將原來的第一個字母大寫:比如int,bool和char的對應(yīng)類型分別是CInt,CBool和CChar。
    C API const Type *對應(yīng)Swift API中的UnsafePointer
    C API Type *對應(yīng)Swift API中的UnsafeMutablePointer
  • 在C中,對某個指針進行取值使用的是*,而在Swift中我們可以使用memory屬性來讀取相應(yīng)內(nèi)存中存儲的內(nèi)容。
  • 通過傳入指針地址進行方法調(diào)用的時候就都比較相似了,都是在前面加上&符號。
  • Swift中為我們提供了一個強制轉(zhuǎn)換的方法unsafeBitCast。unsafeBitCast會將第一個參數(shù)的內(nèi)容按照第二個參數(shù)的類型進行轉(zhuǎn)換,而不去關(guān)心實際是不是可行,這也正是UnsafePointer的不安全所在,因為我們不必遵守類型轉(zhuǎn)換的檢查,而擁有了在指針層面直接操作內(nèi)存的機會。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容