现在在我的应用程序中有一个输出数据数组的生产者;该生产者的输出被绑定(使用 XIB 文件中的“绑定”)到我窗口中的表视图。生产者吐出数据,显示在窗口中,一切正常。
除了我需要修改显示的数据。生产者是第三方应用,所以我不能直接修改它,所以我需要创建一个介于两者之间的过滤器对象。
我创建的对象如下所示:
@interface testFilter: NSObject {
id output;
}
-(void)setInput:(id)s;
@end
我更改了绑定,以便生产者的输出进入我的输入:
[myFilter bind:@"input" toObject:producer withKeyPath:@"output" options:0];
我的实现如下所示:
-(id)init
{
self = [super init];
output = nil;
return self;
}
- (void)setInput:(id)newInput
{
int nEntries = (int)[newInput count];
id copiedArray = [NSMutableArray arrayWithCapacity:3];
for (id entry in newInput)
{
id copiedEntry = [entry mutableCopy];
// blah blah make some changes to copiedEntry
[copiedArray addObject:copiedEntry];
[copiedEntry release]; // I'm done with it, copiedArray added his own retain
}
[self setValue:copiedArray forKey:@"output"];
[copiedArray release]; // I'm done with it, setValue/output added a retain
}
但这因错误而崩溃:
“malloc:对象 0x108e00870 的 *** 错误:未分配被释放的指针”
...直到我删除[copiedArray release]
线。
我认为我应该发送是错误的[copiedArray release]
吗?
我还能检查什么/推荐的调试此类问题的方法是什么?