NSCell 未正确显示
我在 NSTableView 中有一个自定义 NSCell,但它无法正确显示。表视图中有正确数量的项目,但除了第一个之外,它们是空的。第一个显示单元格,但当我单击 NSTableView 上的某个位置时,它的值会随机变化。我怀疑这与我的单元格的 copyWithZone:
有关。我的单元格没有任何 iVar,只有一个绘制其 objectValue 的 drawWithFrame:inView:
方法。在 copyWithZone:
中,我返回 [[[MyCell allocWithZone: zone] init] autorelease]
我应该返回其他内容吗?
I have an custom NSCell in an NSTableView and it doesn't display correctly. The table view has the right number of items in it but they're empty except for the first one. The first one shows the cell but its values change randomly when I click somewhere on the NSTableView. I suspect this has something to do with my cell's copyWithZone:
. My cell doesn't have any iVars, just a drawWithFrame:inView:
method that draws its objectValue. In copyWithZone:
I return [[[MyCell allocWithZone: zone] init] autorelease]
Should I return something else?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不应该
-autorelease
-copyWithZone:
的结果。 “copy”是 Cocoa 中的三个魔词(new、alloc 和 copy)之一,表明返回的对象应该有一个有效的 +1 保留。另请注意,您应该始终在某个时刻调用单元格的指定初始值设定项(
initImageCell:
或initTextCell:
)。如果您的init
没有调用其中之一,那么您可能没有正确初始化单元格。请参阅子类化 NSCell。You should not
-autorelease
the result of-copyWithZone:
. "copy" is one of the three magic words in Cocoa (new, alloc and copy) that indicate that the returned object should have an effective +1 retain on it.Also, note that you should always call the cell's designated initializer at some point (
initImageCell:
orinitTextCell:
). If yourinit
doesn't call one of those, then you're probably not initializing your cells correctly. See Subclassing NSCell.