gpt4 book ai didi

iphone - 为什么在[NSMutableArray array]之后需要此自动释放功能以避免内存泄漏?

转载 作者:行者123 更新时间:2023-12-01 17:35:03 24 4
gpt4 key购买 nike

为什么在[NSMutableArray array]之后需要此自动释放功能以避免内存泄漏?

那是Instruments告诉我的,那里有泄漏。通过将自动发布放入其中,可以解决该问题,但是我不确定为什么需要这样做。 “数组”方法不像INIT或COPY等...

@interface Weekend : NSObject {
NSMutableArray* _events;
}
@property (nonatomic, retain) NSMutableArray* events;
@end

@implementation Weekend

@synthesize events = _events;

- (id)init {
if (self == [super init])
{
self.events = [[NSMutableArray array] autorelease]; // WHY IS THIS AUTORELEASE REQUIRED
}
return self;
}

- (void) dealloc {
[_events release]; _events = nil;
[super dealloc];
}

@end

注意:这是当我 将自动释放出(并且将“if(self == [super init])”)更改为“if((self = [super init]))”后在仪器中看到的
#  Category     Event        Code Location
0 __NSArrayM Malloc at the [NSMutableArray array] point
1 __NSArrayM Autorelease at the [NSMutableArray array] point
2 __NSArrayM Retain at the @synthesize events = _events; point of the code
3 __NSArrayM Release QuartzCore - CA:Transaction::observer_callback(__CF........)
(from main.m:14 - "int retVal = UIApplicationMain(argc, argv, nil, nil);")

最佳答案

为什么需要额外的发行版?你不知道反正不在那里。

问题是您在其他地方过度保留了_events。也许您正在将其传递给另一个未发布的保留类?泄漏始终是Instruments归因于对象创建的,而不是不平衡保留的

添加该自动释放而不是查找不平衡的保留,相当于内存管理的答案偏离了0.3,而只需添加0.3即可解决。您需要删除它并解决实际问题。

编辑:阅读最新的编辑后,我认为您可能会发现Weekend本身已泄漏。

关于iphone - 为什么在[NSMutableArray array]之后需要此自动释放功能以避免内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6221638/

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