0

基本的に、私の問題はまさにそれがタイトルに書かれていることです。のサブクラスをエンコードしようとすると、をUIViewController呼び出すと。具体的には、。 [super encodeWithCoder]NSInvalidArgumentException-[UIImage encodeWithCoder:]: unrecognized selector sent to instance XxXXXXXX

ビュー内の唯一の画像画像はにありUIButton、これもNSCodingに準拠していると想定されており、スタックトレースにはへの呼び出しが含まれています[UIBUtton encodeWithCoder]。ボタンはプログラムで作成され[UIButton buttonWithType:UIButtonTypeCustom]、画像はで設定されsetImage: forState:ます。ここで何が起こっているのか本当にわかりません。私は明らかな何かを見逃していますか、それともUIButton本当に準拠していませんNSCodingか?

4

1 に答える 1

1

アプリ内でビュー オブジェクトをアーカイブする理由は想像できませんが、おそらく UIImage にカテゴリを記述して、NSCoding サポートを自分で追加する必要があります。

詳細については、以下を参照してください: iPhone - UIImageView が NSCoding 準拠であるとドキュメントに記載されているのはなぜですか?

ビューの読み込みシステムが Nib ファイルからオブジェクトを読み込むために NSCoding を使用するため、ビュー オブジェクトは NSCoding をサポートします。しかし、UINib クラスは、NSKeyedArchiver が行わないいくつかの追加作業を行います。

起動間の状態を保存するだけの場合は、状態を表示するのではなく、データを保存することをお勧めします。特に、アプリを更新してビューのレイアウトに何らかの変更を加える予定がある場合はなおさらです。(これが、モデル/ビュー/コントローラーの分離の背後にある動機です。)

于 2011-09-28T21:44:09.273 に答える