gpt4 book ai didi

ios - 检查 NSClassFromString 返回的 nil 值

转载 作者:可可西里 更新时间:2023-11-01 05:12:41 30 4
gpt4 key购买 nike

我们可以使用 NSClassFromString 创建一个类:

Class class = NSClassFromString(@"someClass");
id object = [[class alloc] init];
[object test];

这里没问题。

如果字符串给出的类不存在,

NSClassFromString 将返回 nil

很公平,当对象为 nil(因为类为 nil)时调用 [object test]; 不会导致任何问题。

作为实验,我将 @"someClass" 更改为不存在的其他内容。通过记录 class 的值(当 NSClassFromString 返回 nil 时)它显示 0x0。随后我尝试替换为测试:

id object = [[class alloc] init];

与下面一一对应:

id object = [[Nil alloc] init];

id object = [[nil alloc] init];

id object = [[NSNull alloc] init];

只有 id object = [[NSNull alloc] init]; 不会导致任何编译错误,但是当它到达这一行时会导致崩溃:

[object test];

所以我的问题是,为什么我不能将 class 替换为 nil Nil,但是当 NSClassFromString 返回 nil 并将其分配给 Class class 并调用此 [[class alloc] init ]; 行得通吗? class 在这里也是nil

为应用 id object = [[Nil alloc] init];id object = [[nil alloc] init]; 的情况添加错误消息。

Bad receiver type of 'void *'.

最佳答案

nilvoid* 类型,而不是 id。您不能向 void* 发送消息。

NULL、Nil 和 nil 是 void* 类型,因此可以将其分配给任何内容。如果 nil 是类型 id 那么你不能这样做:

char* foo = nil;

这不是有用的限制。

如果你真的想向 nil 发送消息,你需要将它转换为正确的类型:

[(id)nil description];

关于ios - 检查 NSClassFromString 返回的 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669037/

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