Cocoa 重新计数内存不可用';预计起飞时间

Cocoa 重新计数内存不可用';预计起飞时间,cocoa,memory-management,Cocoa,Memory Management,我被困在可可记忆管理中 - (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

我被困在可可记忆管理中

- (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;
}
如果我设置或获取变量,这段代码可以正常工作,但是当我调用“last”版本(因此retain count为0)时,它调用了aLocation的dealloc方法,但是在Instruments分配中,您会看到没有返回内存

以下是位置来源:

对于头文件,使用“.h”而不是“.m”的相同链接(很抱歉,这是因为垃圾邮件规则)

整个项目:

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

如果我设置或获取 变量,但当我调用'last' 释放(因此保留计数为0)它 ALOCION gets的dealloc方法 打过电话,但用仪器分配 你看,没有记忆被归还

你说的“没有回忆”是什么意思

尽管名称很奇怪,
aLocation
的内存管理与上面的代码是正确的(假设您也在
dealoc
中发布了它)


为什么释放单个对象时内存使用不减少

(意译)

很可能您的对象相对较小,因此,单个释放低于仪器中显示所需的~20K左右

如果你的应用程序由于内存使用问题而崩溃,那么从单一的释放开始是错误的。首先要做的是回答为什么你的应用程序会增加内存,以及是什么导致了内存的增长

将分配工具配置为仅跟踪实时分配。然后按总内存使用量排序。这将显示消耗内存最多的是哪种类型的分配。从减少这个开始

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

如果我设置或获取 变量,但当我调用'last' 释放(因此保留计数为0)它 ALOCION gets的dealloc方法 打过电话,但用仪器分配 你看,没有记忆被归还

你说的“没有回忆”是什么意思

尽管名称很奇怪,
aLocation
的内存管理与上面的代码是正确的(假设您也在
dealoc
中发布了它)


为什么释放单个对象时内存使用不减少

(意译)

很可能您的对象相对较小,因此,单个释放低于仪器中显示所需的~20K左右

如果你的应用程序由于内存使用问题而崩溃,那么从单一的释放开始是错误的。首先要做的是回答为什么你的应用程序会增加内存,以及是什么导致了内存的增长

将分配工具配置为仅跟踪实时分配。然后按总内存使用量排序。这将显示消耗内存最多的是哪种类型的分配。从减少这个开始


在这种情况下非常有效。

这里有更多的信息,因为链接数量最多,我没有机会发布图片

你说的“没有回忆”是什么意思

我会给你看仪器的运行情况,然后应该是清晰的。


如果需要更多详细信息,请点击仪器运行。

此处提供更多信息,因为链接数量最多,我没有机会发布图像

你说的“没有回忆”是什么意思

我会给你看仪器的运行情况,然后应该是清晰的。


如果需要更多详细信息,请点击仪器运行。

您的代码很好。你弄错了仪器的输出。没有位置对象泄漏


对于泄漏,使用“泄漏”仪器。它不会开火。:-)

您的代码很好。你弄错了仪器的输出。没有位置对象泄漏


对于泄漏,使用“泄漏”仪器。它不会开火。:-)

这是所有与
位置相关的代码吗?例如,它不会被放入数组中?是的,这就是全部!如果您想更仔细地查看,请下载源代码。这是所有与
位置相关的代码吗?例如,它不会被放入数组中?是的,这就是全部!如果你想更仔细地看一看,请下载源代码。好的,听起来不错。但是为什么不在释放aLocation对象时减少内存使用量呢。我不清楚。问题是,这个类是一个更大项目的一部分,如果你使用这个应用程序,内存使用量会大到应用程序崩溃的程度。好吧,听起来不错。但是为什么不在释放aLocation对象时减少内存使用量呢。我不清楚。问题是,这个类是一个更大项目的一部分,如果你使用这个应用程序,内存使用量是如此之大,以至于应用程序崩溃。谢谢你的链接。我以前不知道,我想这对我应该有帮助。谢谢你的链接。我以前不知道这件事,我想这应该对我有帮助。