-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];
}];

ブロックの簡単な紹介です。これらは無名関数に相当する Objective-C です。

于 2012-06-30T21:24:46.727 に答える
1

関数ポインターを使用してこれを行うことができるはずです。コールバックがすべて同じ型と引数のセットを取る場合、呼び出すための汎用コードを記述できるはずです

于 2012-06-30T21:22:01.640 に答える
1

NSInvocation クラスを使用することもできます。

于 2012-06-30T21:33:02.637 に答える