在Objective C中dynamic调用一个类方法
假设我有ObjectiveC接口SomeClass ,它有一个叫做someMethod的类方法: 
 @interface SomeClass : NSObject { } + (id)someMethod; @end 
 在其他一些接口中,我希望有一个帮助器方法,可以像这样dynamic地调用someMethod方法: 
 [someOtherObject invokeSelector:@selector(someMethod) forClass:[SomeClass class]; 
 什么应该是invokeSelector的实现? 有没有可能? 
 - (void)invokeSelector:(SEL)aSelector forClass:(Class)aClass { // ??? } 
	
代替:
 [someOtherObject invokeSelector:@selector(someMethod) forClass:[SomeClass class]; 
呼叫:
 [[SomeClass class] performSelector:@selector(someMethod)]; 
示例(使用GNUstep …)
档案啊
 #import <Foundation/Foundation.h> @interface A : NSObject {} - (NSString *)description; + (NSString *)action; @end 
文件Am
 #import <Foundation/Foundation.h> #import "Ah" @implementation A - (NSString *)description { return [NSString stringWithString: @"A"]; } + (NSString *)action { return [NSString stringWithString:@"A::action"]; } @end 
别的地方:
 A *a = [[A class] performSelector:@selector(action)]; NSLog(@"%@",a); 
输出:
 2009-11-22 23:32:41.974 abc[3200] A::action 
好的解释从http://www.cocoabuilder.com/archive/cocoa/197631-how-do-classes-respond-to-performselector.html :
“在Objective-C中,一个类对象为它的层次结构获取了根类的所有实例方法,这意味着从NSObject派生的每个类对象都获得了NSObject的所有实例方法,包括performSelector:
 在Objective-C中,类也是对象。 然而,类对象的处理方式不同,因为它们可以调用其根类的实例方法( NSObject或Cocoa中的NSProxy )。 
 所以有可能在类对象中使用NSObject定义的所有实例方法,dynamic调用类方法的正确方法是: 
 [aClass performSelector:@selector(aSelector)]; 
苹果文档有点更具体。
你不应该自己实现这个。
  NSObject协议有一个performSelector:方法,正是这个。 
这个内置的方法是你想要的吗?
 id objc_msgSend(id theReceiver, SEL theSelector, ...) 
(请参阅此function的运行时参考文档 。)