集合类的retainCount

来源:互联网 发布:高铁买票软件 编辑:程序博客网 时间:2024/05/24 07:08

真的不要太依赖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消息。



同样的道理也可以延伸到其他集合类。

0 0
原创粉丝点击