数组中的Objc内存问题

时间:2010-08-05 06:05:03

标签: iphone objective-c

这是我的代码:

        NSLog(@"rc: %d", [_pagesButton retainCount]);
        NSMutableArray *anArray = [[NSMutableArray alloc] initWithArray:_toolbar.items];
        NSLog(@"rc: %d", [_pagesButton retainCount]);
        [anArray removeObjectAtIndex:2];
        NSLog(@"rc: %d", [_pagesButton retainCount]);
        [_toolbar setItems:anArray animated:YES];
        NSLog(@"rc: %d", [_pagesButton retainCount]);
        [anArray release];
        NSLog(@"rc: %d", [_pagesButton retainCount]);

这是输出:
rc:2
rc:3
rc:2
rc:3
rc:3

第一个rc是2,因为_pagesButton已由此变量和toolbar.items数组保留。在我创建anArray变量之后,保留计数为3,然后我从anArray变量中删除_pagesButton,因此保留计数变为2.然后我设置_toolbar.items并且保留计数变为3.但为什么???当我释放anArray变量时,零售额仍为3.为什么?请帮帮我一点。

1 个答案:

答案 0 :(得分:2)

这个记忆问题已被问过很多次了。 希望这些链接能够回答您的问题。 query regarding NSString object and memory management

Memory management in Objective-C

Sending a message to deallocated object is working