gpt4 book ai didi

objective-c - UIViewController pushViewController View Controller 的高保留计数

转载 作者:行者123 更新时间:2023-11-28 18:07:24 24 4
gpt4 key购买 nike

我写了下面这段代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

GameViewController *gameViewController = [[GameViewController alloc]initWithLevelNumber:([levelGroup intValue]*100+indexPath.row) Bonus:NO];

NSLog(@"Retain Counter =%d",gameViewController.retainCount);

[navController pushViewController:gameViewController animated:YES];
[gameViewController release];

NSLog(@"Retain Counter=%d",gameViewController.retainCount);

[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

两次日志的结果依次为16!这怎么可能?我只调用一次 alloc 方法,然后在将 Controller 压入堆栈后释放 .. alloc-> +1,push-> +1,release-> -1 = 1 或否?

我希望 View Controller 在我从堆栈中弹出时被释放。

最佳答案

请阅读此注释以明确此问题。它是 NSObject 协议(protocol)引用的一部分:

重要提示:此方法通常对调试内存管理问题毫无值(value)。因为任意数量的框架对象可能已经保留了一个对象以保存对它的引用,同时自动释放池可能持有任意数量的延迟释放对象,您不太可能从此方法获得有用的信息

NSObject Protocol Reference. RetainCount discussion

关于objective-c - UIViewController pushViewController View Controller 的高保留计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com