Swift的struct 理解

swift語言有兩種基本的數(shù)據(jù)類型,即類class和結(jié)構(gòu)體struct
swift Foundation框架的SDK,諸如String,Array,Dictionary都是基于struct實現(xiàn)的。

structclass相比,有什么區(qū)別呢?
主要的區(qū)別就在于class類型引用,而struct值引用。
struct沒有繼承的功能,class有繼承功能。

Objective-C中常用的NSArray,NSDictionary, NSString, UIKit等都是類型引用;而NSInteger,CGFloat, CGRect等則是值引用。

類型引用(class reference),將變量a賦值給變量b,即b = a,這樣的賦值語句僅僅將b的指針與a的指針一樣,指向同一塊內(nèi)存區(qū)域,此時改變b的值,a也會跟著改變。
值引用(value reference),賦值語句b = a處理的過程是開辟一個新的內(nèi)存b,將a變量的內(nèi)容拷貝后存放到內(nèi)存b,這時a和b完全沒有關(guān)系的兩個變量,對b的改變不會影響到a。

struct沒有繼承的功能,這是因為swift在本質(zhì)上來說是面向協(xié)議(Protocol Oriented)的語言,struct沒有也不需要繼承的功能,為了實現(xiàn)某個功能,struct去服從并實現(xiàn)某個協(xié)議就即可,從一個較高的層次來看,struct+protocol是構(gòu)成swift面向協(xié)議語言的兩個基石。

?著作權(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)容