gpt4 book ai didi

iphone - removeFromSuperview 和释放内存管理

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:58 28 4
gpt4 key购买 nike

我有一个 MBProgressHUD,我分配如下:

 self.progressHUD_ = [[[MBProgressHUD alloc] initWithView:self.view] autorelease];

如果我调用 removeFromSuperview 那么我是否必须再次调用 progressHUD 释放?另外,如果我用这样的东西声明一个属性:

NSString * title_;

@property (nonatomic, retain) NSString * title_;

那么可以保证在我的 dealloc 中我应该有一个权利释放?

最佳答案

如果 progressHUD_ 是保留属性,那么您将不得不在 dealloc 中释放它。但是,保留属性的好处在于您只需将其设置为nil 即可回收内存;确保使用“ self ”。之前。

e.g.

self.<property_name> = nil;

// or in your case

self.progressHUD_ = nil;

// the following will not release it because it's not accessing the property:

progressHUD_ = nil

我不推荐使用 [progressHUD_release] 因为它会导致问题。例如如果您在别处释放了 progressHUD_ 并且没有将其设置为 nil,您可能会意外释放不再分配的指针(悬挂指针)。

我还建议在 viewDidUnload 中调用 self.progressHUD_ = nil;,这是在内存不足且 View 未显示时调用的。它不会杀死您的类实例,而只是卸载 View 。当然,这假设您在 viewDidLoad 而不是 init 中调用 self.progressHUD_ = [[[MBProgressHUD alloc] initWithView:self.view] autorelease]; ...

关于iphone - removeFromSuperview 和释放内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919281/

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