0

これが私の状況です:

NSDictionary を解析し、プロトコルを実行するオブジェクトを返すクラス メソッドを持つプロトコルがあります。

@protocol RCParsableObject <NSObject>
/** 
  Parses an object from an NSDictionary representation
  Return: A object created from the NSDictionary representation
 */
+(id<RCParsableObject>)parseObjectFromDictonary:(NSDictionary*)object;
@end

コードの一部に、NSString でそのプロトコルを実行するクラスの名前があります。

//dict is the dictionary I want to parse
Class class= NSClassFromString(type);
if ([class conformsToProtocol:@protocol(RCParsableObject)]) {
   //NSObject* object = [class parseObjectFromDictionary:dict];//Obviously that don't works but shows what I want     
}

if の内部では、if によって実行できることがわかっているプロトコルの Class メソッドを実行したいと考えています。どうすればそれができますか?これは以下と同等です:

NSObject * object = [class performSelector:_selector];

Class オブジェクトの場合は?

4

1 に答える 1

2

id戻り値を保持する変数をorとして入力することを除いて、それはあなたがそれを行う方法ですid<RCParsableObject>。これperformSelector:は、セレクターが動的に選択される場合に役立ちますが、ここではそうではありません。

于 2012-05-22T17:32:39.200 に答える