我已经以编程方式创建了UITabBarController,就像这样

mTabBarController = [[UITabBarController alloc] init];
...
NSLog(@"The ref count is : %d", [tabBarItems retainCount]);
mTabBarController.viewControllers = tabBarItems;
NSLog(@"The ref count is : %d", [tabBarItems retainCount]);
[tabBarItems release];
NSLog(@"The ref count is : %d", [tabBarItems retainCount]);


还要像这样在dealloc中释放mTabBarController,

- (void)dealloc {
    [mTabBarController release];
    ...
}


现在的问题是:第一个代码段的输出是

2011-11-01 17:48:26.554 PostCardPrinter[12176:207] The ref count is : 1
2011-11-01 17:48:26.561 PostCardPrinter[12176:207] The ref count is : 1
2011-11-01 17:48:26.561 PostCardPrinter[12176:207] The ref count is : 1


我会发生内存泄漏吗?为什么总是打印1?

如果保留tabBarItems,则第二个输出应为2。

mTabBarController.viewControllers = tabBarItems;


复制数组项并保留每个数组项,那么,第3个输出应该b 2对吗?

我会弄错吗?

最佳答案

保留计数错误:When to use -retainCount?

简而言之:您不能保证retainCount会返回合理的值。

关于ios - 我会发生内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7967616/

10-10 03:24