私は最近、テーブルセルサブクラスのプログラム的なalloc/initを行いました。NSLogのいくつかでは、ほとんどすべての初期化子が呼び出されていました。/init、私は正しく思い出す。iOS:各イニシャライザはいつテーブルセルに使用されますか? init、initWithFrame、initWithCoder、initWithStyle
のinit
initWithStyle
これまでのロジックは何ですか?
どちらが呼び出しますか?
私は最近、テーブルセルサブクラスのプログラム的なalloc/initを行いました。NSLogのいくつかでは、ほとんどすべての初期化子が呼び出されていました。/init、私は正しく思い出す。iOS:各イニシャライザはいつテーブルセルに使用されますか? init、initWithFrame、initWithCoder、initWithStyle
のinit
initWithStyle
これまでのロジックは何ですか?
どちらが呼び出しますか?
ログメッセージが表示される順序を調べることで、どのコールを識別できるかを知ることができます。
Objective-Cコードの一般的なパターンは、実際にクラスの構成済みのインスタンスを作成して返す「指定された初期化子」を持つことです。他のすべての初期化子は、呼び出し元によって指定されなかったパラメータのいくつかに対して固定値で指定された初期化子を呼び出します。指定された初期化子が戻ったら、さらに設定を行います。
すべてがinit
にトレースされます。 UITableViewCell
はNSObject
のサブクラスなので、init
メソッドを持っています。
initWithFrame
は廃止され、しばらくお待ちください(iOS 3以降)。あなたはそれを使用すべきではありません。
iOS 3では、initWithStyle
に置き換えられました。これを使用して、作成するセルのスタイルを指定します。
initWithCoder
は、別のNSObject
メソッドであり、NSCoding
プロトコルの一部です。ここでもNSObject
のサブクラスであるため、UITableViewCell
に表示されます。 initWithCoder
は、オブジェクトをアーカイブ解除するために使用されます(たとえば、オブジェクトをファイルに直接保存しているなど)。
より具体的な回答のためにコードを投稿してください。 initを呼び出すとinitメソッドが起動するので、あなたの質問が正確にわからない。 –