- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想我会很聪明,将与每列强关联的 C++ 回调函数的地址存储在其 NSTableView 的 NSTableColumn 中。我对 NSTableColumn 进行了子类化,并添加了一个指针作为实例数据。我实现了一个子类 -dealloc 来破坏该指针(当然,并调用 super dealloc)。
问题是,派生的 NSTableColumn 的 -dealloc 似乎不会在调用时被调用,例如当调用 [myNSTableView removeTableColumn:theColumn] 时。我猜这是一个内存管理问题——也许 NSTableColumn 是自动释放的?
当 NSTableColumn 被删除时,我找不到任何其他委托(delegate)/通知。我必须子类化 NSTableView 的 removeTableColumn 才能拦截列删除吗?
编辑:因为有些人想知道,这个“指针”是指向从 Boost 的 Signals2 创建的 C++ 类的实例。它提供了从 C++ 模型到 Objective-C++ 方法的信号/回调机制。需要删除该指针,以便从模型的广播类中删除回调订阅。
EDIT2:关于列的定义,如下创建,然后添加到表中:
MyNSTableColumn *theColumn = [[MyNSTableColumn alloc] initWithIdentifier:columnModelAsId];
相关代码遍历表的列,删除它们:
while([[compareTableView tableColumns] count] > fromWhichColumn) {
[compareTableView removeTableColumn:[[compareTableView tableColumns] lastObject]];
接口(interface)中有一个单独的变量定义:
IBOutlet NSTableColumn *myDocumentColumn;
...它指向我在 IB 中的子类 (MyNSTableColumn)。
(注意:基于单元格的表格 - Mac OS)
最佳答案
Peter Hosey(见上文)更正确地回答了这个问题,但如果其他人犯了与我相同的错误,我将添加完整的答案:
创建 NSTableColumn 子类的实例后:
MyNSTableColumn *theColumn = [[MyNSTableColumn alloc] initWithIdentifier:columnModelAsId];
...并将其添加到我的表中:
[myTableView addTableColumn:theColumn];
我发现当调用removeTableColumn时,我的子类的dealloc方法没有被调用。
解决方案,正如 Peter 在上面(和下面)指出的那样,自从我创建了该对象以来,我必须释放它——即使 NSTable 取得了所有权/保留了 theColumn。所以我需要在添加后立即释放它:
[theColumn release];
不这样做无疑是一个愚蠢的错误。正如肯·托马斯(Ken Thomases)指出的那样,泄密工具会在短时间内发现并诊断出问题。
关于objective-c - NSTableColumn 何时被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714473/
我在 NSTableView 中有一列单元格,它们从应用程序的首选项 plist 中获取文本颜色。我想在突出显示时将文本颜色设置为白色,但一直无法找到一个好方法来做到这一点。 有人有什么想法吗? 最佳
我有一个包含 4 列的 NSTableView。我想更改第一个 NSTableColumn 的自动调整大小属性。如果用户调整应用程序的大小,则仅允许第一列更改其宽度。我的代码: // First 3
我想我会很聪明,将与每列强关联的 C++ 回调函数的地址存储在其 NSTableView 的 NSTableColumn 中。我对 NSTableColumn 进行了子类化,并添加了一个指针作为实例数
我不明白我的 NSScrollers 出了什么问题。 自从一段不定的时间以来(我一直在改变我的应用程序源代码中的很多内容,但不是它的 Xib 设计),我所有 的 NSScrollers配置有“Auto
我的应用程序中有以下模型。 Board,拥有下面 List 类型的 NSMutableArray 属性 lists List,包含下面 Card 类型的 NSArray 属性 cards Card,有
我有一个使用 XCode IB 构建的 3 列表格 (NSTableColumn)。 最后一列是“金额”,其前面的列是“说明”。当我调整窗口大小时,表格也会调整大小,但“金额”是跨度更宽的列。 如何固
我正在尝试以编程方式获取正在编辑的单元格的column.identifier。我试图通过为 NSControlTextDidBeginEditingNotification 注册 NSViewCont
我正在针对 Mac OS X 10.6 (Snow Leopard) 进行开发。当我在我的 NSTableView 的两个列标题之间双击时,左侧的列会自动调整大小,正如您所期望的那样。 我也想在上下文
我有一个 NSScrollView 和一个 NSTableView,其中有一些 NSTableColumn。当我按下按钮时,我用动画更改 NSScrollView 的宽度。这是我的代码: NSDict
我有一个带有单列的NSTableView。该列在 Interface Builder 中选中了“可编辑”,但双击 TableView 中的单元格不会执行任何操作。我已经确认(在 -tableView:
我的类有一个枚举属性。此属性绑定(bind)到 NSTableColumn。 typedef enum _Status { Unknown=0, Win, OSX } Stat
我在 Interface Builder 中创建了一个带有一些列的 NSTableView。我已将表格 View 设置为自动保存其设置(我在属性检查器中设置了自动保存名称并检查了列信息)。现在我想以编
我正在尝试创建一个以空字符串作为标识符的列,但每次我尝试创建该列时,Cocoa 似乎都将空字符串替换为“Field”一词。你如何解决这个问题? - (void)addColumnWithCheckbo
我在对 NSTableColumn 内容进行排序时遇到问题。在我的 NSTableView 中,有三列:文件、大小、路径。内容存储在 NSMutableArray 中。这个数组中的每个对象都是一个包含
我正在构建一个 Mac OS X 应用程序,该应用程序具有一个带有单个 NSTableColumn 的 NSTableView 和一个 NSSegmentedControl。当我选择不同的段时,我打算
有没有办法为 NSTableColumn 的每一行显示不同的小图像(图标)? 我不一定需要为其添加新列,我想知道是否可以在每行文本前面添加图标。 我知道有一个方法: - (void)setDataCe
型号 extension MyEntity { @nonobjc public class func fetchRequest() -> NSFetchRequest { re
我有一个包含 2 列的 NSTableView,其中单元格是普通的 NSTableCellView,其文本字段的文本是从字典中设置的。 这一切都是在 IB 中创建的,我只需将 TableView 拖/
我想在代码中以编程方式设置一些 NSTableColumns 的宽度(以便我可以在启动时恢复宽度),但我真的不知道如何应用文档中写的内容 for column in table.tableColumn
我正在尝试实现一种方法来清除所有项目和列的 NSTableView。但是当我尝试执行以下操作时发生崩溃: - (void)clearResultData { [resultArray remo
我是一名优秀的程序员,十分优秀!