我们可以通过调用
NSObject
的+ (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector
方法来获取NSMethodSignature
。然后使用+ (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature
构建NSInvocation
。但问题在于,我们只能获取实例方法的方法签名,那么类方法怎么办呢?
class
部分。你可以直接将它发送到YourObject
,它仍然可以工作,因为类名也是一等对象,同时也是 typedefs。 - Richard J. Ross IIIinstanceMethodSignatureForSelector:
和methodSignatureForSelector:
。一个用于实例方法,另一个用于类方法。 - KentADD
部分不正确,请参考 @Ben Flynn 的测试代码。 - xi.lin