Cocoa touch UITableViewCell的分配

Cocoa touch UITableViewCell的分配,cocoa-touch,ipad,uitableview,allocation,Cocoa Touch,Ipad,Uitableview,Allocation,嗨,伙计们,我的项目有问题。我有一个UIViewController,里面有一个UITableView。此表加载一些自定义单元格(LSButtonCell)。 我多次尝试推/弹出此视图,发现了这种奇怪的行为: UITableViewCell似乎不会自行释放。 发生了什么事?有什么想法吗?到目前为止看起来还可以,我会确保调用dealloc。尝试在dealloc方法中添加NSLog语句,以查看它们是否在屏幕上被调用 您的代码中存在一些问题: 1) 您不应保留委托,而应仅分配。它导致相互保留。所以这

嗨,伙计们,我的项目有问题。我有一个UIViewController,里面有一个UITableView。此表加载一些自定义单元格(LSButtonCell)。 我多次尝试推/弹出此视图,发现了这种奇怪的行为:
UITableViewCell似乎不会自行释放。
发生了什么事?有什么想法吗?

到目前为止看起来还可以,我会确保调用dealloc。尝试在dealloc方法中添加NSLog语句,以查看它们是否在屏幕上被调用

您的代码中存在一些问题:

1) 您不应保留委托,而应仅分配。它导致相互保留。所以这两个对象都不会被释放

2) 避免使用零rect启动视图。对于
UIView
initWithFrame:(CGRect)一个frame
被指定为初始值设定项,因此一个frame是必需的参数,很容易猜测必需的参数不应该是0。总有一天,CGRectZero会对你耍坏把戏

3) 合成属性时,使用与属性名称不同的IVAR名称,即
@synthesis delegate=delegate
这样您就永远不会错过setter和getter方法的调用


说到您的问题,如果您在问题中添加LSButtonCell的标题将有所帮助。

您确定要在返回可重用单元格对象时将代理分配到您要执行的位置吗?我会试着把它和你的手机设置代码放在一起。另外,代码的截图对你来说很容易,但对人们来说,剪切和粘贴你的代码以快速测试项目和验证你的行为并不是那么容易。我不同意2和3。使用UITableViewCells,只有在布局子视图中才知道contentView的框架。我将使用CGRectZero初始化,然后在LayoutSubView中相应地设置帧。对于3,我不认为这是海报代码的问题,而是您为代码所做的决定。只有在极少数情况下,我才会将属性名设置为不同于ivar名称,通常是在我想确保避免子类中的ivar命名冲突时。当然,这不是强制性规则。这只是一个好风格的问题。