2

実行時にメソッドの引数のクラスを取得する必要があります。

方法があります

- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx;

NSMethodSignatureにありますが、オブジェクトの場合にのみ@を返します。このオブジェクトのクラスを取得する必要があります。実際には、このオブジェクトがNSArrayであるかどうかを検出します。それを達成する可能性は何ですか?

4

3 に答える 3

3

ずっと前にこれを試したので、コードを検索するために返信するのに少し時間がかかりました。とにかくここに情報があります。

NSMethodSignatureクラスのgetArgumentTypeAtIndexおよびmethodReturnTypeの戻りデータは、「Objective-CタイプエンコーディングでメソッドのリターンタイプをエンコードするAC文字列」になります。-ドキュメントによる。

したがって、再調整されたcharデータを確認し、次の表で適切なタイプを見つける必要があります。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html

エンコーディングテーブルをチェックすることで答えが得られると思います!

ハッピーコーディング:)

于 2012-08-17T11:24:28.480 に答える
2

これを試しましたか?

if ([object_you_wanna_check isKindOfClass:([NSArray class])])
于 2012-08-17T11:08:57.123 に答える
0

試す

if ([obj isKindOfClass:[MyMclass class]]) {
     //enter code here
}

また

if ([obj respondToSelector:@selector(myRequiredSelector)]) {
     //enter code here
}

または、 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.htmlで説明されている高度なインターフェイスを使用します

于 2012-08-17T11:14:22.443 に答える