2012-02-08 9 views
2

私は最近、テーブルセルサブクラスのプログラム的なalloc/initを行いました。NSLogのいくつかでは、ほとんどすべての初期化子が呼び出されていました。/init、私は正しく思い出す。iOS:各イニシャライザはいつテーブルセルに使用されますか? init、initWithFrame、initWithCoder、initWithStyle

のinit
initWithStyle

これまでのロジックは何ですか?
どちらが呼び出しますか?

+0

より具体的な回答のためにコードを投稿してください。 initを呼び出すとinitメソッドが起動するので、あなたの質問が正確にわからない。 –

答えて

0

ログメッセージが表示される順序を調べることで、どのコールを識別できるかを知ることができます。

Objective-Cコードの一般的なパターンは、実際にクラスの構成済みのインスタンスを作成して返す「指定された初期化子」を持つことです。他のすべての初期化子は、呼び出し元によって指定されなかったパラメータのいくつかに対して固定値で指定された初期化子を呼び出します。指定された初期化子が戻ったら、さらに設定を行います。

1

すべてがinitにトレースされます。 UITableViewCellNSObjectのサブクラスなので、initメソッドを持っています。

initWithFrameは廃止され、しばらくお待ちください(iOS 3以降)。あなたはそれを使用すべきではありません。

iOS 3では、initWithStyleに置き換えられました。これを使用して、作成するセルのスタイルを指定します。

initWithCoderは、別のNSObjectメソッドであり、NSCodingプロトコルの一部です。ここでもNSObjectのサブクラスであるため、UITableViewCellに表示されます。 initWithCoderは、オブジェクトをアーカイブ解除するために使用されます(たとえば、オブジェクトをファイルに直接保存しているなど)。

関連する問題