Art*_*rov 7 iphone cocoa cocoa-touch objective-c
每个iPhone应用程序中都有很多对象会永远存在,直到应用程序死亡.它们是:应用程序委托,窗口,主视图控制器,可以是导航或制表符控制器,其中的所有对象.为什么在地球上我应该在退出花费宝贵的CPU周期之前释放它们?据我所知,应用程序进程将被终止,因此它的堆,一致或不一致也将消失.
那我为什么要发布呢?Apple的开发手册坚持使用它,如下面的代码示例(来自iPhone开发指南).这是我在图书馆中通过单词dealloc搜索的第一个地方.
@implementation HelloWorldAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
MyView *view = [[MyView alloc] initWithFrame:[window frame]];
[window addSubview:view];
[view release];
[window makeKeyAndVisible];
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
从NHObject-dealloc方法的讨论部分:
需要注意的是,当一个应用程序终止,对象可能不会被发送dealloc的消息,因为进程的内存被自动清除上退出,它是更有效简单地允许操作系统来清理资源,而不是调用所有的内存管理方法.出于这个原因和其他原因,您不应该在dealloc中管理稀缺资源
但是如果您的应用程序足够快以在15秒内对applicationWillTerminate作出反应,则在当前实现中调用上面示例中的dealloc方法.
再说一遍.我是否应该避免在应用程序退出速度上面编写dealloc方法,或者这种方法有任何问题吗?
因为你会知道,Artem.
让我们玩一个名为"如果"的小游戏.
如果,你开发了一个很棒的应用程序.一个熟练的应用程序,真的 - 公众喜欢它!你的销售膨胀,鸟儿在天空中唱出你的名字!
但是,您选择不在AppDelegate dealloc中执行任何操作.只需几秒钟,你决定不打扰.有什么危害?
哦,起初你很容易睡在一堆钱上.但是随着销售的增长和增长,你会感到有点刺激.然后梦想就开始了.
方形,起初模糊不清.几天过去了,随着你的睡眠越来越少,它们越来越清晰.最后,有一天,你看.
他们是街区,Artem.内存块.他们在你的梦中做了什么?嗯,你看,在应用程序退出之前没有完全摆脱存在,他们必须去某个地方.应用程序消失了,手机已经移动了.
所以,他们搬进了你的头.每一天,更到达,少留空间YOURSELF.
我希望这能提供丰富的信息...... Artem.
因为发布的类可能会产生副作用,例如在其 dealloc 方法或其超类之一中保存状态。操作系统不应该关心,无论如何它都应该回收所有资源。
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |