-->

确定是否一个Objective-C的方法是在运行时期间可变参数(Determining if an

2019-09-19 14:13发布

有没有办法找到出路 - 在运行时 - 一个给定的方法是否是可变参数类型的? 像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