0

私は現在、以下で説明するパラダイムを自分のアプリケーションで使用しており、機能しているため、大きな問題ではありません。ただし、このパターンで何らかの規則に違反しているかどうかを知りたいです。

ARCを使用しています。

モーダルviewControllerを提示するアプリケーションがあります。その上にテーブルビューがあります。

次に、テーブルビューにデータを入力できる「追加」ボタンがあります。

add を押すと、多くの textFields を持つ UIView から作成された小さなダイアログ ボックスが表示されます。- 各 textField はインスタンス変数です。

add メソッドが呼び出されたときに、textField インスタンス変数の初期化を割り当てています。

私の質問は:インスタンス変数をインスタンス化してそれらを使用するviewControllerでこのaddメソッドを呼び出してから、後で同じメソッドを再度呼び出しても大丈夫ですか?メソッドが呼び出された時間。

したがって、最初にそれらをnilingせずに同じivarでalloc initを呼び出します-私も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 に答える