iPhone:使用 Interface Builder 自定义 UITableViewCell ->如何释放cell对象?

发布于 2024-08-30 15:00:36 字数 982 浏览 5 评论 0原文

官方文档告诉我,我必须做这三件事才能正确管理“nib 对象”的内存。

@property (nonatomic, retain) IBOutlet UIUserInterfaceElementClass *anOutlet;

“然后您应该合成相应的访问器方法,或者根据声明实现它们,并(在 iPhone OS 中)在 dealloc 中释放相应的变量。”

- (void)viewDidUnload {
    self.anOutlet = nil;
    [super viewDidUnload];
}

这对于正常视图来说是有意义的。但是,对于通过 .nib 文件加载的自定义 UITableViewCells 的 UITableView,我该如何做到这一点?

IBOutlets 位于 MyCustomCell.h(继承自 UITableViewCell)中,但这不是我加载笔尖并将其应用到单元格实例的位置,因为这发生在 MyTableView.m 中,

我也是如此仍然在 MyCustomCell.m 的 dealloc 中释放 IBOutlets 还是我必须在 MyTableView.m 中执行某些操作?

另外,MyCustomCell.m 没有 - (void)viewDidUnload {},我可以在其中将我的 IBOutlets 设置为 nil,而我的 MyTableView.m 有。

The official documentation tells me I've to do these 3 things in order to manage the my memory for "nib objects" correctly.

@property (nonatomic, retain) IBOutlet UIUserInterfaceElementClass *anOutlet;

"You should then either synthesize the corresponding accessor methods, or implement them according to the declaration, and (in iPhone OS) release the corresponding variable in dealloc."

- (void)viewDidUnload {
    self.anOutlet = nil;
    [super viewDidUnload];
}

That makes sense for a normal view. However, how am I gonna do that for a UITableView with custom UITableViewCells loaded through a .nib-file?

There the IBOutlets are in MyCustomCell.h (inherited from UITableViewCell), but that is not the place where I load the nib and apply it to the cell instances, because that happens in MyTableView.m

So do I still release the IBOutlets in the dealloc of MyCustomCell.m or do I have to do something in MyTableView.m?

Also MyCustomCell.m doesn't have a - (void)viewDidUnload {} where I can set my IBOutlets to nil, while my MyTableView.m does.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法少女 2024-09-06 15:00:36

您的 IBOutlets 属性是单元格吗?如果是这样,则在 MyCustomCell 的 dealloc 方法中释放它们。

确保您遵循 tableView 的准则并在 tableview:cellForRowAtIndex 中调用 dequeueReusableCellWithIdentifier: 。当 tableView 不再需要自定义单元格时,它将释放它们。假设您没有任何其他对单元格的引用(您不应该这样做),那么将为 tableView 出列的单元格调用 dealloc。

Are your IBOutlets properties of the cell? If so then release them in MyCustomCell's dealloc method.

Make sure that you are following the guidelines for tableViews and calling dequeueReusableCellWithIdentifier: in tableview:cellForRowAtIndex. The tableView will release your custom cells when it no longer needs them. Assuming that you do not have any other references to your cells (you shouldn't) then dealloc will be called for the cell dequeued by the tableView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文