我收到一個警告在下面的方法: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