2012-03-31 2 views
0

ちょうどNSCoder + NSKeyedArchiverで作業を始めました(そして私はObjective Cの初心者です)。encodeObject:encodeInt:エンコーダはすでに型を認識していませんか?

エンコード(encodeObject: encodeInt:など)の際にデータ型を指定する必要があるのはなぜですか?この型はすべてのvarsに対して既に定義されています。実行時に発生する可能性のある型の不一致を防ぐために、データ型をコンパイル時に役立つものにするだけですか?エンコーダがタイプをチェックする必要がないように、速度ですか?

簡単な質問ですが、私はボンネットの下で何が起こっているのかもう少し知りたいです。

答えて

0

お気づきの場合は、プリミティブのみが表示されます。プリミティブをコーダーに書き込むことはできないので、プリミティブを保存する前に実際のオブジェクトに変換する便利な方法があります(またその逆もあります)。たとえば、encodeIntはintをNSNumberオブジェクトに変換します。さもなければ毎回それをやる必要があります;)。

+0

intはintとして宣言されているので、なぜNSCoderなどでそれを理解できないのですか? - それは私が不思議に思っていたものです。私はプリミティブ型の具体的な方法について知っています。 –

+0

"int"はオブジェクトではないため、プリミティブです。それは "int"として渡すことしかできません。 – borrrden

関連する問題