次のように作成された NSMutableArray を取得しました。
NSMutableArray *expr = [[NSMutableArray alloc] init];
[expr addObject:[NSNumber numberWithDouble:3.0]];
[expr addObject:@"+"];
[expr addObject:@"%x"];
[expr addObject:@"*"];
[expr addObject:[NSNumber numberWithDouble:4.0]];
後で、それを として知られているメソッドに渡し(id) anExpression
、イントロスペクションを使用してこれがどの種類のオブジェクトであるかを判断しようとします。
if ([[anExpression class] isEqual:[NSMutableArray class]]) {
// Some code I only want to do if it IS a Mutable array
}
しかし、それは false を返し、私のコードは実行されません。私は試してみNSLog
まし[NSMutableArray class]
たが、それは私に与えますNSMutableArray
。それほど驚くことではありません。
しかし、 のクラスを試してみるとNSLog
、expr
が得られ__NSArrayM
ます。
どうしてこれなの?これを回避するにはどうすればよいですか?
私はObjective-Cにあまり詳しくないので、説明してください。理解できないことをするのは好きではありません。