2

NSDictionary の値として保存した名前の関数を呼び出すにはどうすればよいですか? 基本的に、メソッド名/呼び出しとして文字列を型キャストする必要があります。これは可能ですか?

[thisCellContent objectForKey:@"callFunction"] //the object contains the function name to be called

//call this value as function, something similar to this ..
[self [thisCellContent objectForKey:@"callFunction"]]

このようなことは可能ですか?

4

2 に答える 2

4

これは好きではありませんが、ランタイム/リフレクションを使用できます:

NSString *s = [thisCellContent objectForKey:@"callFunction"];
SEL sel = NSSelectorFromString(s);
[self performSelector:sel withObject:nil];
于 2012-12-15T09:08:36.543 に答える
3

Objective-Cブロックを辞書に入れることをお勧めします。次に、ブロックを呼び出すことができます(必要に応じて、他のものを呼び出すこともできます)。このようなもの:

//In code that sets up the dictionary
void (^thingToCall)() = [^{ /* any code you want to run here */ } copy];
[dictionary setObject:thingToCall forKey:@"callFunction"];


//In code that uses the dictionary
void (^thingToCall)() = [dictionary objectForKey:@"callFunction"]; 
thingToCall(); //call the block
于 2012-12-15T09:11:11.467 に答える