當前位置:成語大全網 - 書法字典 - IOS是可變的,也是不可變的。

IOS是可變的,也是不可變的。

iOS項目中經常使用以NS開頭的類,如NSString、NSDictionary、NSArray immutable、mutable NSMutableString、NSMutableDictionary、NSMutableArray等。

每次使用它時,我都會報告壹些問題,例如為什麽會出現這種情況,這種變化有什麽好處,以及它對編碼會有什麽樣的幫助。

創建壹個對象,它的內存空間的大小是由我們決定的,而這個內存空間的大小實際上是由alloc決定的。但是alloc聲明壹個新的內存空間並初始化大小;初始化內存空間後,內存的大小和值不能隨便更改。

如果我們需要在其他時候改變這個對象的內存地址呢?

在Objective-C中,提出了可變對象的概念。可變對象占用的內存大小和數據不僅在alloc初始化時確定,而且在其他時候也可以自行更改。

理解清楚概念後,基礎框架中提供了哪幾種變量類型?

確切地說,所有具有NSMutable的類型都可以去看看它們是否是可變類型。

常見的變量類型:NSMutableArray、NSMutableDictionary、NSMutableString、NSMutableAttributedString、NSMutableSet等。我就不壹壹舉例了,會在Xcode中自動補上。

分析

當我們使用不可變集合時,我們可以這樣理解它嗎:

C的形式,可以用順序表,鏈表,數組創建嗎?

猜壹個場景。在拍賣會上,數組、鏈表和序列表需要介紹各自的特點供客戶選擇:

不可變:因為順序表和鏈表都是數據結構,所以pass選擇壹個數組。

變量:需要增刪查,所以數組pass,鏈表,順序表各有優劣,OC會根據時空復雜度進行切換(很可能,只是猜測,錯了請不要打我)。

IOS深層和淺層復制NSString,NSMutableString(1)

IOS深層和淺層拷貝NSArray和NSMutableArray(2)

iOS的那些奇妙的東西深深淺淺的復制(3)