您的位置:首页 > 移动开发 > Objective-C

NSMutableArray类addObject方法对对象retainCount的影响 --在MRC下

2015-07-27 19:48 621 查看
下面代码表明, NSMutableArray类的addObject方法,执行的时候,好像是首先申请一个指针变量内存,然后将对象的地址赋值给这个指针变量,再把这个指针变量作为一个节点添加到数组的元素地址链表中。

在形式上,NSMutableArray类的addObject方法,对同一个对象执行了m次,则这个对象的retainCount会加上m,如下面代码所示:

#import <Foundation/Foundation.h>
int main(int argc,const
char * argv[])
{
NSAutoreleasePool *pool =[NSAutoreleasePool
new];
NSMutableString *mstr=[NSMutableString
stringWithString:@"hello world"];
NSMutableArray *mar=[NSMutableArray
new];
printf("%lu\n",[mstr
retainCount]); //输出1
[mar addObject:mstr];
printf("%lu\n",[mstr
retainCount]); //输出2
[mar addObject:mstr];
printf("%lu\n",[mstr
retainCount]); //输出3
[mar addObject:mstr];
printf("%lu\n",[mstr
retainCount]); //输出4
[mar addObject:mstr];
printf("%lu\n",[mstr
retainCount]); //输出5
printf("下面开始输出所有的数组元素,数组的元素个数为: %lu\n",mar.count);
//输出5
for(NSMutableString *mstrTemp
in mar)
printf("%s\n",[mstrTemp
UTF8String]);
[pool drain];
}

输出结果为:

1
2
3
4
5
下面开始输出所有的数组元素,数组的元素个数为: 4
hello world
hello world
hello world
hello world
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: