pushViewController是否保留了控制器?

fuz*_*oat 11 iphone cocoa-touch objective-c

我很难找出pushViewController是否保留了控制器,目前我有以下代码(有效)...

ColorController *colorController = [[ColorController alloc] initWithNibName:nibColor bundle:nil];
[[self navigationController] pushViewController:colorController animated:YES];
[colorController release];
Run Code Online (Sandbox Code Playgroud)

但我正在考虑删除发布并添加自动释放...

ColorController *colorController = [[[ColorController alloc] initWithNibName:nibColor bundle:nil] autorelease];
[[self navigationController] pushViewController:colorController animated:YES];
Run Code Online (Sandbox Code Playgroud)

非常感激

加里

Jer*_*nes 11

这什么都不做......

ColorController *colorController = [[ColorController alloc] initWithNibName:nibColor bundle:nil];
[[[self navigationController] pushViewController:colorController animated:YES] autorelease];
Run Code Online (Sandbox Code Playgroud)

你是自动释放pushViewController的返回值:animated:,这是无效的.

您的第一个代码段有效且正确无误.pushViewController:确实保留了被推送的控制器.

编辑:在更新的代码中,两个样本之间几乎没有差异.两者都保持适当的保留计数 但是,除非必要,否则避免使用autoRelease是一种"最佳做法"(特别是在内存敏感区域,如iPhone).这有助于您的应用程序维护更可预测和可管理的内存占用.