真的不要太依賴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結構集合類的區...