私はObjective-Cの学習に取り組んでいます。私はメモリ管理のための感触を得ようとしています。私はCのメモリ管理にかなり精通していますが、私はObjCの違いを理解しようとしています。 目的匿名オブジェクトのCメモリ管理
のは、私がself
に複素数に渡された追加方法
-(Complex*)add:(Complex*)c;
を有し、複素数を保持するために使用される
Complex
というクラスがあるとしましょう(
Complex
が変更可能なオブジェクトである、のは言わせて)。
だから私はこのようにそれを呼び出すことができます。
Complex *c = [[Complex alloc] withReal: -3.0 andImag: -2.4]; // c = -3.0-2.4i
[c add : [[Complex alloc] withReal: 1.0 andImag: 2.0]]; // now c = -2.0-0.4i
何がadd
への呼び出しで作成した一時オブジェクトのために使用されるメモリはどうなりますか?私はそれがメモリリークだと仮定します。これは正しいコードですか?
Complex *c = [[Complex alloc] withReal: -3.0 andImag: -2.4]; // c = -3.0-2.4i
Complex *b = [[Complex alloc] withReal: 1.0 andImag: 2.0]; // b = 1+2i
[c add : b]; // now c = -2.0-0.4i
[b release];
ボーナスnoob質問:Objective-C 2.0 GCはこの状況を処理しますか?最初の例で
GCのおかげでありがとう - しかし、私はiPhoneで再生を開始する前にしばらく時間がかかる;) – decitrig
確かなこと。 GCを使用することができれば素晴らしいですが、Tigerサポートを落とさなければならないという意味ですが、使用するすべてのフレームワークもGCをサポートする必要があります。しかし、時間が経つにつれて、それはより一般的になり、iPhoneがより速くなるにつれて、おそらくGCをサポートし始めるでしょう。 :-) –