4

非常に不適切にコーディングされた iOS プロジェクトを OS X に移植する過程で、(後で) 2 つのバージョンの同期を維持できるように、モデル レイヤーを保持するようにしています。

私は現在、iOS のコード ベースを変更する権限を持っていません。また、変更したくもありません。また、そのすべての障害について、モデル層はテストされ、機能しています。

壊れていない場合は直さないでください、と彼らは言います。私の質問は、以下のコードが壊れているかどうかです。initの後にへの呼び出しがなくalloc、インスタンス化されるクラスは の直接のサブクラスであることに注意してくださいNSObject

...
SuspectClass *obj = [SuspectClass alloc];
obj.arrayProperty = [NSArray arrayWith...];

// etc.
...

質問をする別の方法は、 がNSObject実際initにオブジェクトに何かを追加するかどうかです。

4

2 に答える 2

6

in NSObjectのドキュメントから、init「オブジェクトは初期化されるまで使用する準備ができていません」という公式の回答が得られます。

...そして実際的な答え: 「NSObject クラスで定義された init メソッドは初期化を行わず、単に自分自身を返します。」

:-)

alloc機能的ではありますが、何らかの形式が必要であることを警告する場所の数を考えると、裸を信頼するとは思いませんinit

于 2012-05-01T13:28:36.700 に答える
0

initがないと、未定義の状態の「オブジェクト」(少なくとも「オブジェクト」用のメモリ内の十分なスペース)が得られます。あなたはあなたの記憶のその場所に何が起こるかを知ることができないので、initは必須です

于 2012-05-02T16:46:23.410 に答える