gpt4 book ai didi

cocoa - RetainCount 内存未释放

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

我被 Cocoa Memory Managagment 困住了。

- (IBAction) createPush:(UIButton *)sender {
[create setEnabled:NO];
[release setEnabled:YES];

aLocation = [[Location alloc] init];

// Put some Example Stuff in the Class
aLocation.title = @"Apartment";
aLocation.street = @"Examplestreet 23";
aLocation.zip = @"12345";
aLocation.city = @"Exampletown";
aLocation.http = @"http://google.com";
aLocation.info = @"First Info Text";
aLocation.info2 = @"Second Info Text, not short as the first one";
aLocation.logoPath = @"http://google.de/nopic.jpg";

[aLocation.pictures addObject:@"http://google.de/nopic.jpg"];
[aLocation.pictures addObject:@"http://google.de/nopic.jpg"];
}

- (IBAction) releasePush:(UIButton *)sender {
[release setEnabled:NO];
[create setEnabled:YES];

[aLocation release];
aLocation = nil;
}

如果我设置或获取变量,此代码工作正常,但当我调用“最后”释放时(因此保留计数为0),它会调用aLocation的dealloc方法,但在仪器分配中,您会看到没有给出内存返回。

这里是位置来源:

http://homes.dnsalias.com/sof/Location.m头文件的相同链接带有“.h”而不是“.m”(抱歉,因为垃圾邮件规则)。

整个项目:http://homes.dnsalias.com/sof/Location.zip

感谢您的帮助,我的失败在哪里?丹尼斯

最佳答案

This Code works fine if I set or get Variables, but when I call the 'last' release (so the retain count is 0) it dealloc Method of aLocation gets called, but in Instruments Allocations you see that no memory is given back.

“没有内存被归还”是什么意思?

尽管名称很奇怪,但上面的代码中 aLocation 的内存管理是正确的(假设您也在 dealloc 中释放了它)。

<小时/>

Why doesn't memory use decrease when a single object is released?

(转述)

您的对象可能相对较小,因此,单次释放低于在 Instruments 中显示所需的约 20K 左右。

如果您的应用由于内存使用问题而崩溃,那么寻求单个释放是错误的起点。首先要做的就是回答为什么您的应用会增加内存以及造成这种增长的原因。

将分配工具配置为仅跟踪实时分配。然后按总内存使用情况排序。这将向您展示哪种类型的分配消耗最多的内存。首先减少它。

Heapshot analysis在这些情况下可能非常有效。

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

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