-1

我正在尝试将以下 JS 代码转换为 ObjC;它基本上定义了一个函数并将其存储在一个数组中以供以后执行:

var logic = function() {
    me.removeNode(node);
}
this.queue.push(logic);

我的 ObjC 端口包含该方法:-(void)removeNode:(AbstractNode*)node我被卡住了...我只想使用指定的“节点”参数对这个方法的调用进行排队...

编辑:我正在阅读有关选择器的信息。它仍然模糊,但可能会有所帮助。不知何故。或不?

甚至有可能,还是我需要找到解决方法:-)?谢谢!

感谢社区的解决方案:

// Queue declaration
NSMutableArray *IRQ = [[NSMutableArray array] retain];

// Add logic to the queue for delayed execution:
[IRQ addObject:^{ NSLog(@"thanks for the help!"); } ];

// Call later
for (int i = 0; i < [IRQ count]; i++){
     void (^delayedCall)(void) = [IRQ objectAtIndex:i];
     delayedCall();
}
4

3 回答 3

5

使用块:

[queue addObject:^{
    [me removeNode:node];
}];

这是对 blocks 的简短介绍。它们是匿名函数的 Objective-C 等价物。

于 2012-06-30T21:24:46.727 回答
1

我相信你应该能够用函数指针来做到这一点。如果您的回调都采用相同的类型和参数集,您应该能够编写通用代码来调用

于 2012-06-30T21:22:01.640 回答
1

您还可以使用 NSInvocation 类。

于 2012-06-30T21:33:02.637 回答