有没有办法找到出路 - 在运行时 - 一个给定的方法是否是可变参数类型的? 像method_getTypeEncoding()
; 不会告诉我的方法是否接受可变数目的参数。 或者是有可能一招,告诉呢?
Answer 1:
罗伯特的意见是正确的。 考虑:
@interface Boogity
@end
@implementation Boogity
- (void)methodWithOneIntArg:(int)a {;}
- (void)variadicMethodWithIDSentinel:(id)a, ... {;}
@end
运行strings
上生成的二进制生产(也有股票main()
strings asdfasdfasdf
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
v20@0:8i16
v24@0:8@16
Hello, World!
如果我改变的可变参数的方法声明为- (void)variadicMethodWithIDSentinel:(int)a, ...
,该strings
输出为:
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
v20@0:8i16
Hello, World!
因此,没有,没有办法知道。
文章来源: Determining if an Objective-C method is variadic during runtime