重新实例化实例变量 - 设计查询

时间:2013-08-07 06:35:13

标签: ios objective-c cocoa-touch uikit

我目前正在使用我将要在我的应用程序中描述的范例并且它有效,所以这不是一个大问题;但是,我想知道我是否用这种模式打破某种规则。

我正在使用ARC。

我有一个提供模态viewController的应用程序。它有一个表格视图。

然后我有一个“添加”按钮,允许我在表格视图中输入一些数据。

按添加,弹出一个从具有许多textField的UIView创建的小对话框。 - 每个textField都是一个实例变量。

当我的add方法被调用时,我正在分配初始化textField实例变量。

我的问题是:可以在我的viewController上调用这个add方法,它实例化实例变量并使用它们,然后再次调用相同的方法,这将调用已经分配的实例变量上的alloc init和最后一次调用该方法时。

因此在相同的ivars上调用alloc init而不首先将它们弄乱 - 我也在使用ARC?

像这样的伪代码:

·H

@property UITextField *textField;

的.m

@synthesize textField;



(void) someMethod {

textField = [[UITextField alloc] init] 
[textField doSomethingElse]

}

LATER

一遍又一遍地调用某种方法。

我应该为init添加所有文本字段,只需在add方法中添加和删除它们的UIView吗?

谢谢, 问候, 约翰

2 个答案:

答案 0 :(得分:1)

当您的添加控制器被解除时,ARC应该负责释放所有实例变量。因此,当您再次需要它们时,重新创建它们没有任何害处。

答案 1 :(得分:1)

根据定义,您无法在现有实例上调用alloc。您正在做的是导致旧实例被销毁并创建新实例以替换它们。这没有什么不妥,但它可能非常浪费,并且取决于创建这些实例的难度,耗时。