0

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

我正在使用 ARC。

我有一个显示模态视图控制器的应用程序。它有一个表格视图。

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

按下添加,弹出一个从 UIView 创建的小对话框,其中包含许多文本字段。- 每个文本字段都是一个实例变量。

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

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

因此在同一个 ivars 上调用 alloc init 而不先将它们 niling - 我也在使用 ARC?

像这样的伪代码:

。H

@property UITextField *textField;

.m

@synthesize textField;



(void) someMethod {

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

}

之后

一些方法被一遍又一遍地调用。

我应该改为分配初始化所有文本字段,然后在 add 方法中从我的 UIView 中添加和删除它们吗?

谢谢,问候,约翰

4

2 回答 2

1

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

于 2013-08-07T06:39:06.853 回答
1

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

于 2013-08-07T06:40:07.347 回答