gpt4 book ai didi

iphone - 我是否在 iPhone 上释放这个实例变量?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:22 26 4
gpt4 key购买 nike

我有一个类负责构建我的模型对象。它为模型分配内存并保留它们,并负责在 dealloc 发生时释放它们。

现在我有一个相应的 UIViewController,在这种情况下它充当客户端。它将有几个实例变量,指向它需要的模型。它不需要为它们分配内存,因为负责这样做的类已经完成了。我还需要从客户端释放内存吗?这是一个例子

ModelHolder.m 会有类似的东西

- (NSArray *)modelA
{
if (modelA == nil) {
modelA = [[ModelClassA alloc] init];
}

return modelA

}

- (void)dealloc { [super dealloc]; [modelA release]; }

现在 ClientViewController 会有类似的东西:

 @class myModelA;
@interface ClientViewController : UIViewController {
ModelClassA myModelA;
}

// more code
@end
#import "ModelHolder.h"
@implementation ClientViewcontroller ...... etc
- (void)viewDidLoad
{
self.myModelA = [instanceOfModelHolder modelA];
}
- (void)dealloc {
// am I responsible to release here?
}

请不要介意任何语法错误,因为我只是在这里匆匆忙忙地写了这篇文章。我认为我的观点在代码中得到了很好的说明。

谢谢你..

最佳答案

假设您将 ClientviewController 的 modelA 属性声明为 @property(retain)@property(copy)@ property(mutableCopy),您正在保留该属性的值,因此您必须释放它。

2013 年的编辑:假设您没有使用 ARC。 ARC 会为你做这件事,所以通常在ARC 下根本不需要实现dealloc。当不使用 ARC 时,你需要释放你拥有的一切。

关于iphone - 我是否在 iPhone 上释放这个实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/587284/

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