実行時にメソッドの引数のクラスを取得する必要があります。
方法があります
- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx;
NSMethodSignatureにありますが、オブジェクトの場合にのみ@を返します。このオブジェクトのクラスを取得する必要があります。実際には、このオブジェクトがNSArrayであるかどうかを検出します。それを達成する可能性は何ですか?
実行時にメソッドの引数のクラスを取得する必要があります。
方法があります
- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx;
NSMethodSignatureにありますが、オブジェクトの場合にのみ@を返します。このオブジェクトのクラスを取得する必要があります。実際には、このオブジェクトがNSArrayであるかどうかを検出します。それを達成する可能性は何ですか?
ずっと前にこれを試したので、コードを検索するために返信するのに少し時間がかかりました。とにかくここに情報があります。
NSMethodSignatureクラスのgetArgumentTypeAtIndexおよびmethodReturnTypeの戻りデータは、「Objective-CタイプエンコーディングでメソッドのリターンタイプをエンコードするAC文字列」になります。-ドキュメントによる。
したがって、再調整されたcharデータを確認し、次の表で適切なタイプを見つける必要があります。
エンコーディングテーブルをチェックすることで答えが得られると思います!
ハッピーコーディング:)
これを試しましたか?
if ([object_you_wanna_check isKindOfClass:([NSArray class])])
試す
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で説明されている高度なインターフェイスを使用します