gpt4 book ai didi

iphone - 为什么要写[anView release], anView = nil;而不是 [anView 发布];?

转载 作者:行者123 更新时间:2023-12-03 18:37:02 27 4
gpt4 key购买 nike

我在某处读到 - 关于内存不足警告并放弃不可见的 View 及其所有 subview (=整个 Nib ,我认为),你应该这样做:

-(void)dealloc {
[anView release], anView = nil;
[someImageView release], someImageView = nil;

[super dealloc];
}

而不是

-(void)dealloc {
[anView release];
[someImageView release];

[super dealloc];
}

在我调用release之后,将这些指针接地到nil(=“无对象”)的原因是什么?让我猜一下:其他一些方法可能会出于某种原因保留 View (任何人都可以举出这种情况何时发生的例子吗?),然后 didReceiveMemoryWarning 事情发生,并且您释放当前不可见的整个 nib+view (即在多 View 应用程序中)。一旦用户想要再次看到该 View ,您将快速再次加载 Nib ,然后:它加载所有 View ,连接 socket ,然后砰!您的其他保留 View 现在挂起,没有任何指针孤独地位于内存块中,导致大量内存泄漏,直到您的应用程序崩溃。

对/错?

最佳答案

原理比UIView更通用。事实上它比 Objective-C/Cocoa -release 方法更通用。它对于 C malloc()/free() 内存函数也有效。

当您不再需要某个对象或任何内存区域时,首先释放/释放它。然后,为了确保您不会再次使用它,您可以通过将 nil 分配给对象或将 NULL 分配给对象来清除访问该对象或内存区域的方法。内存指针。

关于iphone - 为什么要写[anView release], anView = nil;而不是 [anView 发布];?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805915/

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