NSInvocation
究竟是如何工作的?有很好的介绍吗?
我在理解以下代码(来自Mac的Cocoa Programming,第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章之前,我没有遇到任何困难。但现在..。
提前感谢!
https://stackoverflow.com/questions/313400
复制相似问题