JoB*_*324 1 iphone objective-c
有三个方面可以做到的原因是什么?
以下是developer.apple.com的一些代码:
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[aNavigationController release];
Run Code Online (Sandbox Code Playgroud)
......在同一行中同样的事情:
self.navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
Run Code Online (Sandbox Code Playgroud)
它似乎干净,简单,直截了当.我以前遇到过一个没有被保留的属性的麻烦,导致[对象释放]在不应该的时候销毁对象(据我所知 - 保留属性已经设置).使用单行公式就像花花公子一样.
Objective-C 内存管理规则规定,通过alloc一个对象实例,您是retain该实例的所有者(共享其他对象),因此您必须release在UINavigationController何时放弃所有权以防止内存泄漏.在非垃圾收集的环境中(例如在iPhone上),这意味着平衡alloc或copy(或包含"黄金"或"复制"的方法)用release或autorelease.那么你的第二个片段就是
self.navigationController = [[[UINavigationController alloc] initWithRootViewController:rootViewController] autorelease];
Run Code Online (Sandbox Code Playgroud)
如果您可以避免 autorelease在内存有限的环境(如iPhone)上使用,最好使用显式release.-[NSObject autorelease]将接收器添加到当前的电流NSAutoreleasePool,随后将-release在未来的某个时间调用池中的对象.当你想要小心内存使用时,"未来的某个时间"并不是一个好主意.因此,在iPhone上你的第一个例子是标准用法.
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |