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

下面代码表明, 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



你可能感兴趣的:(NSMutableArray类addObject方法对对象retainCount的影响 --在MRC下)