gpt4 book ai didi

objective-c - 如何通过现有对象创建实例

转载 作者:行者123 更新时间:2023-12-03 16:28:57 25 4
gpt4 key购买 nike

我已经尝试过以下代码。它崩溃了

    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 的实例中获取类名时。它总是返回“__NSCFNumber”而不是“NSNumber”。为什么?

最佳答案

NSNumber 是一个“抽象类”,这意味着虽然它代表多个类,但它生成的对象不会以您可能期望的方式响应 class 消息。

您可以在 Apple's documentation on class clusters 中了解有关抽象类的更多信息。 .

关于objective-c - 如何通过现有对象创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com