我收到一个警告在下面的方法:Objective-C的多个方法警告
- (void)tableView:(NSTableView *)aTableView
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
NSString *identifier = [aTableColumn identifier];
Person *person = [employees objectAtIndex:rowIndex];
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] tableView:aTableView setObjectValue:[person valueForKey:identifier] forTableColumn:aTableColumn row:rowIndex];
if(![undo isUndoing])
{
[undo setActionName:@"Edit Person"];
}
[person setValue:anObject forKey:identifier];
[tableView reloadData];
}
我想实现撤消,所以我想我会调用相同的方法,只是通过旧值。我得到的错误是“警告:名为'-tableView:setObjectValue:forTableColumn:row:'found”的多个方法。任何想法为什么?
解决了这个问题。这是一个小例子应用程序。我想通常如果我这样做,我会有一个单独的控制器类(我没有使用NSController或绑定),但如何防止我不得不管理撤消堆栈?无论如何我每次添加/删除/编辑东西时都不必管理撤消堆栈? – JPC 2011-06-14 17:02:27
它不会阻止您管理撤消堆栈,但它会将撤消堆栈管理大部分移入数据/控制器层,这将显着减少脆弱性。更好的是,您应该能够利用Cocoa中内置的各种控制器,使所有这些变得更加容易和更加灵活(甚至是核心数据 - 我使用核心数据来处理简单的应用程序,因为它几乎消除了所有代码) 。 – bbum 2011-06-14 17:17:58
我的理解是,只有Mac OS支持NSController和绑定之类的东西,并且如果您正在编写遗留的东西/ iOS,那么您没有这些类可以使用。我明白他们是有用的,但如果我不能使用他们,我想知道其他的事情。 – JPC 2011-06-14 17:45:49