一般来说,什么时候应该在Objective C中为变量创建一个实例变量?
例如,假设我有一个带UILabel的UIViewController。在什么情况下我会将UILabel作为实例变量而不是这样做:
UILabel *label = [[UILabel alloc] init];
//set text of label
[view.addSubview label];
[label release];
答案 0 :(得分:2)
如果您需要对任何资源使用中等持久句柄,则应将其设为实例变量,如果所涉及的资源至少保持适度持久性。
在上面的例子中,然后是;标签应该是一个实例变量,可能是使用IBOutlet分配的。
一般来说,UIKit中的大部分内容(与基金会相对)都可以通过NIB文件进行实例化,然后通过网点访问。
这不仅仅是性能问题;它还与内存管理和碎片有关,并且在大多数情况下简化了翻译和国际化。
答案 1 :(得分:2)
根据您的具体情况,如果您稍后需要访问该标签(例如更改文字),保留ivar将为您节省一些努力再次找到它。
一般原因是持久性,范围和便利性。
答案 2 :(得分:0)
在您的特定示例中,该对象被写为变量,以便在将其添加到视图(保留它)后可以发送release
消息。
没有变量的等效代码是:
[view addSubview:[[[UILabel alloc] init] autorelease]];
我们不需要发送版本,因为我们正在自动释放该对象。