gpt4 book ai didi

iphone - UIImage释放问题

转载 作者:行者123 更新时间:2023-12-03 21:22:08 25 4
gpt4 key购买 nike

我一直在为这个问题烦恼,我已经阅读了所有关于释放问题的帖子,但无法理解为什么,因为我对 Objective-C 和 iphone 还很陌生,正如你所知道的:)

但我不明白的是下面的这段代码说我已经过度释放了 UIImage,现在我已经尝试了一切,但应用程序仍然崩溃

UIImage *imageSave      = [UIImage imageNamed:@"btn_save.png"];
UIButton *btnSave = [UIButton buttonWithType:UIButtonTypeCustom];

[btnSave setBackgroundImage:imageSave forState:UIControlStateNormal];

btnSave.frame = CGRectMake(0, 0, imageSave.size.width, imageSave.size.height);

[btnSave addTarget:self action:@selector(save) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *barBtnSave = [[UIBarButtonItem alloc] initWithCustomView:btnSave];

self.navigationItem.rightBarButtonItem = barBtnSave;

//[imageSave release];
//[btnSave release];
[barBtnSave release];


UIImage *imageCancel = [UIImage imageNamed:@"btn_cancel.png"];
UIButton *btnCancel = [UIButton buttonWithType:UIButtonTypeCustom];

[btnCancel setBackgroundImage:imageCancel forState:UIControlStateNormal];

btnCancel.frame = CGRectMake(0, 0, imageCancel.size.width, imageCancel.size.height);

[btnCancel addTarget:self action:@selector(cancel) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barBtnCancel = [[UIBarButtonItem alloc] initWithCustomView:btnCancel];

self.navigationItem.leftBarButtonItem = barBtnCancel;

//[imageCancel release];
//[btnCancel release];
[barBtnCancel release];

最佳答案

好的,让我们看一下这两行:

UIImage *imageCancel = [UIImage imageNamed:@"btn_cancel.png"];

[imageCancel release];

在第1行中,你创建了一个autorelease镜像,那么retainCount将为0。然后,你释放该镜像,这将使retainCount为-1​​,从而导致崩溃

您需要记住的是增加retainCount的列表:alloccopyretain ...如果您调用其中之一对于对象的这些方法,您必须执行以下任一操作:autoreleaserelease

关于iphone - UIImage释放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714917/

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