2011-08-03 4 views
0

可能性の重複:
alloc, init, and new in Objective-CCocoaで+ newを使用していますか?それがなぜ存在するのか?

+alloc/-init...+newがあります。それらの役割は、+newがインスタンスプーリング用に設計されていることを除き、ドキュメントではほとんど同じです。 (私の理解によれば:)

しかし、+alloc/-initでプールが可能です。分離されたメソッドが必要な理由それとも何らかの理由がありますか?

そして、この方法を利用した例は見つかりませんでした。いつこのメソッドを使うべきですか?方法+newのユースケースを入手できますか?

+0

私は複製に同意します。申し訳ありません:) – Eonil

答えて

1

StepstoneのオリジナルのObjective-C実装では、+newをインスタンスの作成に使用しました。それはSmalltalkからのホールドオーバーでした。 NeXTは+new+alloc/-initに分けました。ほとんどのクラスは、インスタンスが使用するメモリを割り当てるために何か別の処理を行う必要がなく、その場所全体にそのコードを複製するのは意味がありませんでした。

+3

'+ [NSOject new]'は 'return [[self alloc] init]'として実装されています。 'new'を使用している場合は、指定された初期化子が呼び出されることは保証されていないことに注意してください。要するに; '新しい'を避けてください。 – PeyloW

関連する問題