有时当我为iPhone编程时,我想知道什么时候必须分配和初始化对象,何时不要。当您使用UI控件时,似乎您不必这样做。这是真的吗?为什么?
(假设它们已在视图控制器的.h中声明。)
示例:
label1.text = @"Hello";
VS
label1 = [[UILabel alloc] init];
label1.text = @"Hello";
这是因为我正在使用Interface Builder吗?如果我要用代码编写我的GUI,我是否必须这样做?
答案 0 :(得分:5)
你的困惑是因为NIB文件 - 一个NIB文件基本上是一个冻结的对象图(即一个有孩子的对象,有其他孩子的对象等)。当您加载该NIB文件时,运行时会调用所有的分配和 ,以便它们已经创建。
当你想要创建一个先前未在NIB文件中指定的对象时,那就是你需要alloc / init的时候。
答案 1 :(得分:2)
除了静态字符串之外,你基本上需要分配/初始化所有对象,如上所述。即使你正在使用便利方法,例如+ [NSString stringWithFormat:...],在幕后仍然会发生alloc和init。这些方便的方法通常只需要执行alloc和init,然后再放入-autorelease,这样您就不用担心清理了。
如果您只是创建一个临时对象,并且有一种方便的方法,请使用它。如果你想让你的对象留在那里并且有方便的方法,通常可以调用它并添加-retain,或者只使用alloc / init。
显然,如果没有便捷方法,请使用alloc / init。