集合類的retainCount

2021-06-21 22:23:42 字數 603 閱讀 7163

真的不要太依賴retaincount。

nsarray *array1 = [nsarray array];

nsarray *array2 = [nsarray alloc]init];

nsmutablearray *array3= [nsmutable array];

nsmutablearray *array4 = [nsmutable alloc]init];

前面兩種其實指向同乙個位址,因為編譯器知道這倆以後都不會變了,所以認為是同乙個東西會比較省資源。retaincount沒有意義。

第三個,第四個未來可能會不同,因此保持區別對待。它們的retaincount都是1.

乙個物件被加入nsarray時,會被retain一次,這樣就不用擔心原來的被乾掉,可以認為是有了份屬於自己的拷貝。移除的時候,對它release一次。

乙個nsarray陣列被乾掉時,也會向所有的組員傳送一次release。

乙個物件被加入nsmutablearray時,也會被retain。陣列的可變性在於可以增減指標,改變指標值。

乙個nsmutablearray被乾掉時,也會向組員傳送release訊息。

同樣的道理也可以延伸到其他集合類。

關於 retainCount 的疑問

我在 main.m 裡寫了三個測試例子,就是不明白為什麼輸出的都是 1 別人幫忙測試了下,輸出的是額外的超大的值 nsstring str1 welcome nslog d str1 retaincount nsstring str2 nsstring stringwithstring you ns...

java的集合類

由collection介面派生的兩個介面是list和set set set介面同樣是collection介面的乙個子介面,它表示數學意義上的集合概念。set中不包含重複的元素,即set中不存兩個這樣的元素e1和e2,使得e1.equals e2 為true。由於set介面提供的資料結構是數學意義上集...

集合類的比較

集合類的分類 1.list結構集合類 arraylist linkedlist vector stack 2.map結構集合類 hashmap hashtable 3.set結構集合類 hashset treeset 4.queue結構集合類和queue介面 list結構集合類和map結構集合類的區...