有没有办法在运行时找出给定方法是否是可变参数类型?类似的东西method_getTypeEncoding()
; 这不会告诉我一个方法是否接受可变数量的参数。或者有什么诀窍可以这么说?
问问题
296 次
1 回答
6
罗伯特的评论是正确的。考虑:
@interface Boogity
@end
@implementation Boogity
- (void)methodWithOneIntArg:(int)a {;}
- (void)variadicMethodWithIDSentinel:(id)a, ... {;}
@end
在生成的二进制文件上运行strings
(还有 stock 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!
所以,不,没办法说。
于 2012-07-17T19:58:13.447 回答