2012-02-20 15 views
2

NSStringを解析してObjective-Cの名前と一致するメソッドを呼び出せますか?私はdoSomethingと呼ばれる文字列を持っていた、と私は-(void) doSomethingというメソッドを持っていた場合Objective-C - 呼び出し可能なメソッドにNSStringをパーズする

、私はそれに一致する任意の方法があったかどうかを確認するには入力した、とあれば何でもテキスト解析するscanfような何かを行うことができます:ここでは一例であり、はい、そのメソッドを呼び出しますか?

+0

より具体的なものは素晴らしい@Monolo –

答えて

0

jxpx777の答えのような関連するNSObjectの方法は、あなたが探していた情報を提供しますが、あなたはもっとしたい場合には、ランタイムはかなり完全なを提供するC関数の長いリストを持っていますオブジェクトとクラスのイントロスペクション例えば

、あなたはクラスによって実装メソッド名のNSArrayは、あなたがこのような何かを行うことができますしたい場合:

Class myClass = [self class]; 

unsigned int methodCount; 

Method *methods = class_copyMethodList(myClass, &methodCount); 

NSMutableArray *methodNames = [NSMutableArray arrayWithCapacity:10]; 

for (int i = 0; i < methodCount; i++) { 

    const char *methodNameCStr = sel_getName(method_getName(methods[i])); 

    NSString *methName = [NSString stringWithCString:methodNameCStr 
              encoding:NSASCIIStringEncoding]; 

    [methodNames addObject:methName]; 
} 

free(methods); 

NSLog(@"Methods: %@", methodNames); 

あなたはプレーンなCの呼び出しとObjective-C/Cocoaのが自由に混在していることがわかります。

関連する問題