我目前正在使用我将要在我的应用程序中描述的范例并且它有效,所以这不是一个大问题;但是,我想知道我是否用这种模式打破某种规则。
我正在使用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吗?
谢谢, 问候, 约翰
答案 0 :(得分:1)
当您的添加控制器被解除时,ARC应该负责释放所有实例变量。因此,当您再次需要它们时,重新创建它们没有任何害处。
答案 1 :(得分:1)
根据定义,您无法在现有实例上调用alloc
。您正在做的是导致旧实例被销毁并创建新实例以替换它们。这没有什么不妥,但它可能非常浪费,并且取决于创建这些实例的难度,耗时。