gpt4 book ai didi

IOS : Releasing variable with @property (nonatomic,保留)

转载 作者:可可西里 更新时间:2023-11-01 05:24:36 27 4
gpt4 key购买 nike

带有@property nonatomic 和 retain 的变量是否应该显式释放。

@interface MyScreenViewController : UIViewController <UIWebViewDelegate> {
UIWebView* greetingView;
}

@property(nonatomic, retain) IBOutlet UIWebView* greetingView;

- (void)dealloc {
[greetingView release];
}

是否需要在 delloc 方法中发布???

最佳答案

当然。是的,您应该通过保留、复制和不分配来释放您的属性(property)。您在 viewDidUnload 中将该属性设置为 Nil。

- (void)viewDidUnload {
[super viewDidUnload];

self.greetingView = nil;
}

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

[super dealloc];
}

引用 UIViewController 类中的内存管理引用:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

内存是 iOS 中的关键资源, View Controller 提供内置支持以在关键时刻减少内存占用。 UIViewController 类通过其 didReceiveMemoryWarning 方法提供一些对低内存条件的自动处理,该方法释放不需要的内存。在 iOS 3.0 之前,此方法是释放与自定义 View Controller 类关联的额外内存的唯一方法,但在 iOS 3.0 及更高版本中,viewDidUnload 方法可能更适合大多数需求。

当出现低内存警告时,如果 UIViewController 类知道可以稍后重新加载或重新创建它们,则会清除其 View 。如果发生这种情况,它还会调用 viewDidUnload 方法让您的代码有机会放弃与您的 View 层次结构关联的任何对象的所有权,包括使用 nib 文件加载的对象、在 viewDidLoad 方法中创建的对象以及在 viewDidLoad 方法中延迟创建的对象运行时并添加到 View 层次结构中。通常,如果您的 View Controller 包含导出(包含 IBOutlet 关键字的属性或原始变量),您应该使用 viewDidUnload 方法放弃这些导出的所有权或您不再需要的任何其他与 View 相关的数据。

关于IOS : Releasing variable with @property (nonatomic,保留),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685952/

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