次のコードを試しました。墜落した
NSNumber* a = [[NSNumber alloc] initWithLong:12];
NSNumber* b = [[NSClassFromString([NSString stringWithUTF8String:object_getClassName(a)]) alloc] initWithLong:12];
次のコードもクラッシュしました。
NSNumber* a = [[NSNumber alloc] initWithLong:12];
NSNumber* b = [[a class] alloc] initWithLong:12];
しかし、次のコードは機能しました
NSNumber* b = [[NSClassFromString(@"NSString") alloc] initWithLong:12]
NSNumber のインスタンスからクラス名を取得したいとき。「NSNumber」ではなく常に「__NSCFNumber」を返します。なぜ?