最佳答案
NSInvocation
到底是如何工作的? 有好的介绍吗?
我在理解以下代码(来自 Mac OS X 的 Cocoa 编程,第3版)的工作原理方面遇到了一些具体的问题,但是我也能够独立于教程示例应用这些概念。密码:
- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index
{
NSLog(@"adding %@ to %@", p, employees);
// Add inverse of this operation to undo stack
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
if (![undo isUndoing])
[undo setActionName:@"Insert Person"];
// Finally, add person to the array
[employees insertObject:p atIndex:index];
}
- (void)removeObjectFromEmployeesAtIndex:(int)index
{
Person *p = [employees objectAtIndex:index];
NSLog(@"removing %@ from %@", p, employees);
// Add inverse of this operation to undo stack
NSUndoManager *undo = [self undoManager];
[[undo prepareWithInvocationTarget:self] insertObject:p
inEmployeesAtIndex:index];
if (![undo isUndoing])
[undo setActionName:@"Delete Person"];
// Finally, remove person from array
[employees removeObjectAtIndex:index];
}
我知道它想做什么了。(顺便说一句,employees
是一个定制的 Person
类的 NSArray
。)
成为一个。NET 的家伙,我试图把不熟悉的 Obj-C 和 Cocoa 概念大致相似。NET 概念。这和。NET 的委托概念,但是非类型化?
这在书中并不是100% 清楚的,所以我正在从真正的 Cocoa/Obj-C 专家那里寻找一些补充,同样是为了理解简单(- ish)示例下的基本概念。我真的希望能够独立应用这些知识——直到第9章,我在这方面没有任何困难。但现在..。
先谢谢你!