gpt4 book ai didi

cocoa - 处理从 cocoa 便捷方法返回的对象

转载 作者:行者123 更新时间:2023-12-03 16:56:29 24 4
gpt4 key购买 nike

我遇到了很多 NSDate 对象过早释放的问题。我怀疑这些问题可能与我处理从 NSDate 便捷方法返回的对象的方式有关。我认为 JKShow 类中的 showDate 属性声明应该是“保留”,但将其更改为分配或复制似乎对问题没有影响。

JKShow *show; 
NSDate *date;
NSMutableArray *list = [[NSMutableArray alloc] init];

// Show 1
show = [[JKShow alloc] init];
//...
date = [gregorian dateFromComponents:dateComponents];
show.showDate = date;
[list addObject:[show autorelease]];

// Show 2
show = [[JKShow alloc] init];
//...
date = [gregorian dateFromComponents:dateComponents];
show.showDate = date;
[list addObject:[show autorelease]];

更新

问题不在此处复制的代码中。在我的 JKShow init 方法中,我没有保留从 NSDate 便捷方法返回的日期。谢谢大家的帮助。

最佳答案

从 dateFromComponents 返回的日期应该位于自动释放池中,因此您的 showDate 属性应该是“保留”是正确的。事实上无论如何都应该如此(除非你特别想要“复制”)。

从您显示的代码来看,您似乎将显示对象的所有权完全授予了列表(因为您在添加它们时对其设置了自动释放)。您是说日期对象在显示对象从列表中出来之前被释放(或者列表正在被释放)?

此外,您是使用合成属性,还是手动编写它们?如果是后者,你的 setShowDate 属性方法是什么样的?

您还可以尝试在不同的位置记录日期对象的保留计数(尽管我总是发现自动释放确实使事情变得复杂)。

关于cocoa - 处理从 cocoa 便捷方法返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/255846/

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