首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >笨蛋的NSInvocation?

笨蛋的NSInvocation?
EN

Stack Overflow用户
提问于 2008-11-24 04:17:49
回答 2查看 60.2K关注 0票数 140

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章之前,我没有遇到任何困难。但现在..。

提前感谢!

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/313400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档