5

特定のメソッドが可変長型かどうかを実行時に確認する方法はありますか? のようなものmethod_getTypeEncoding(); メソッドが可変数の引数を受け入れるかどうかはわかりません。それとも、そう言うトリックはありますか?

4

1 に答える 1

6

ロバートのコメントは正しいです。検討:

@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!

だから、いいえ、言う方法はありません。

于 2012-07-17T19:58:13.447 に答える