与我想知道的有关的简化示例... 所以我有一个自定义类,并声明了该类的一个实例。
MyCustomClass *objectA;
objectA.property = value;
IF I NSLog(@"打印值:%@", objectA.property);
它将返回零。
现在如果我这样声明它...... MyCustomClass *objectA = [MyCustomClass alloc] init];
然后给它赋值...
objectA.property = value;
一切都是顺其自然...
最后,我想知道为什么当 X-Code 看到我在代码中为其分配属性时,它不会自动实例化内存中的对象。从开发人员的角度来看,它不为我做更好。
最佳答案
Tom 的回答涵盖了为什么运行时不能安全地为您创建一个初始化对象。
下一点是:Objective-C 不会为您做任何事情,“因为它知道它应该这样做”。没有自动魔法。如果你想要一个对象,你创建一个初始化对象。如果不这样做,则指针为零。
编译器越来越聪明,这是真的,但是那种“你一定是想创建一个对象,所以我会默默地为你做”的行为意味着你,程序员,无法分辨确定发生了什么。
某些第 4 代(解释型)语言会为您进行这样的设置,但我想不出任何编译/第 3 代语言会这样做。
关于ios - 为什么我需要在为对象属性赋值之前分配/初始化一个类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952152/