Objective c tableView cellForRow自动删除我的对象

Objective c tableView cellForRow自动删除我的对象,objective-c,memory-leaks,uitableview,Objective C,Memory Leaks,Uitableview,我创建了这样一个对象: NSDictionary *listProfils; ... @property (nonatomic, retain) NSDictionary *listProfils; ... @synthetize listProfils 在后面的代码中,我确实在viewdiload方法中设置了我的对象,然后在tableView:tableviewcellforrowatinexpath: 问题是,当程序读取方法tableView:tableViewcellForRow

我创建了这样一个对象:

NSDictionary *listProfils;

...

@property (nonatomic, retain) NSDictionary *listProfils;

...

@synthetize listProfils
在后面的代码中,我确实在viewdiload方法中设置了我的对象,然后在tableView:tableviewcellforrowatinexpath:

问题是,当程序读取方法tableView:tableViewcellForRowAtIndexPath:时,我的对象已被释放,而它不在前一个方法中

有人知道这里有什么问题吗?为什么我的对象被释放了


提前谢谢

您没有足够的代码来确定哪里出了问题,但我会猜一猜。你可能做过类似的事情

listProfils = [NSDictionary dictionaryWith... //etc.];
由于这会返回一个自动删除的词典,ivar不会保留该词典,因此该词典将在一段时间后发布。更好地使用属性引用:

self.listProfils = [NSDictionary dictionaryWith... //etc.];

这将负责保留您刚刚创建的词典,autorelease将负责释放本地引用。

当您创建对象时,您是否使用+1 retain count创建它?首先,它看起来好像拼错了…可能只是发布问题时的一个拼写错误,但我想我会让你知道,以防它在你的代码中引起问题:)请在创建和分配listProfils对象的地方发布实际代码。没什么可干的,你的解决方案解决了我的问题。非常感谢你。我将更深入地了解伊瓦尔和赛尔夫。谢谢;)
self
只是表示方法接收者的
id
。语法
myProperty
访问ivar,就像
self->myProperty
一样,而
self.myPoperty
通过
myProperty
setMyProperty:
方法访问ivar,这些方法通常称为
myProperty:
,由
@synthesis
-ing属性生成。