iPhone:何时使Objective C变量成为实例变量?

时间:2011-06-23 20:31:44

标签: iphone objective-c

一般来说,什么时候应该在Objective C中为变量创建一个实例变量?

例如,假设我有一个带UILabel的UIViewController。在什么情况下我会将UILabel作为实例变量而不是这样做:

UILabel *label = [[UILabel alloc] init];
//set text of label
[view.addSubview label];
[label release];

3 个答案:

答案 0 :(得分:2)

如果您需要对任何资源使用中等持久句柄,则应将其设为实例变量,如果所涉及的资源至少保持适度持久性。

在上面的例子中,然后是;标签应该是一个实例变量,可能是使用IBOutlet分配的。

一般来说,UIKit中的大部分内容(与基金会相对)都可以通过NIB文件进行实例化,然后通过网点访问。

这不仅仅是性能问题;它还与内存管理和碎片有关,并且在大多数情况下简化了翻译和国际化。

答案 1 :(得分:2)

根据您的具体情况,如果您稍后需要访问该标签(例如更改文字),保留ivar将为您节省一些努力再次找到它。

一般原因是持久性,范围和便利性。

答案 2 :(得分:0)

在您的特定示例中,该对象被写为变量,以便在将其添加到视图(保留它)后可以发送release消息。

没有变量的等效代码是:

[view addSubview:[[[UILabel alloc] init] autorelease]];

我们不需要发送版本,因为我们正在自动释放该对象。