簡體   English   中英

類擴展中的靜態變量和變量有什​​么不同?

[英]What is different between static variable and variable in class extension?

靜態變量“聲明變量static將其范圍限制為僅僅類 - 並且僅限於在文件中實現的類的一部分”(Apple doc)。

而且我認為在類擴展中定義的變量只有在定義它的類中才有限制范圍。

那是類似的!

類擴展中的靜態變量和變量有什​​么不同?

static變量與它定義的文件相關聯。它不能從該文件的外部訪問,並且在整個程序中只為它創建了一個存儲位置。

存儲的區別也適用於非靜態全局變量 - 程序中只有一個變量。

類擴展中的變量同樣限於對其聲明的文件的可見性,但它是一個實例變量。 您創建的每個類的實例都附加了一個新的存儲空間。

如果您創建一個static變量並從該類的多個實例更改其值,則每個實例都將看到相同的值。 ivar不是這種情況 - 每個對象都可以更改並保留該變量的值。

(這就是為什么在ObjC中有時使用static變量來模擬其他語言中存在的類變量的原因。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM