gpt4 book ai didi

iPhone内存释放问题

转载 作者:行者123 更新时间:2023-12-03 20:59:35 25 4
gpt4 key购买 nike

我对 iPhone 程序中的 dealloc 功能有一些疑问。是否需要给出 [self.object_name release] 或 [object_name release] 就可以了?..我的 dealloc 函数中有一个奇怪的问题是这样的。

-(void) dealloc {
[self.listOfDates release];
[self.listOfDescriptions release];
[super dealloc];
}

但是程序崩溃并给出 EXEC_BAD_ACCESS。这里两个对象都是在类的 init 函数中使用 alloc 分配的 NSMutableArray 实例。没有 self 的相同功能可以正常工作,即

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

这是我声明属性的方式

@property (nonatomic,retain) NSMutableArray *listOfDates;
@property (nonatomic,retain) NSMutableArray *listOfDescription;

在实现文件中,我综合了这个,并在 init 函数内部,我像这样分配了这些变量

self.listOfDates = [[NSMutableArray alloc] init];
self.listOfDescription = [[NSMutableArray alloc] init];

那么需要付出 self 吗?我在这里缺少什么?

当我删除 mutableCopy 函数时问题得到解决,我用该函数来复制 NSMutableArrays 的实例,该实例作为参数传递给 init 函数,如下所示

-(id)initWithDate:(NSMutableArray *)dates andDescription:(NSMutableArray*)descriptions
{
if(self = [super initWithNibName:@"DateDescriptionControl" bundle:nil])
{
self.listOfDates = [[NSMutableArray alloc] init];
self.listOfDescription = [[NSMutableArray alloc] init];

self.listOfDates = [dates mutableCopy];
self.listOfDescription = [description mutableCopy];

}

return self;
}

删除 mutableCopy 后,dealloc 现在不会抛出 EXEC_BAD_ACCESS。那么我在哪里犯了错误,我仍然无法弄清楚:(

最佳答案

dealloc 函数中的释放不需要 self。

关于iPhone内存释放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040766/

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