3

これらの日付ポインターのいずれかまたは両方を使用するには、[リリース] が必要です。どうすればこれを知ることができますか? 明示的に init を行っていないため、わかりません。

NSDate *date = [NSDate date];

NSDate *date = [dateWithTimeIntervalSince1970:100000000];
4

2 に答える 2

5

いいえ、これらのメソッドから返される日付は両方とも自動リリースされます。それらのメモリ管理について心配する必要はありませんが、良い市民になるためには、使い終わったらポインタを nil に設定することをお勧めします。

原則として、私が「CARN」ルールと呼んでいるものに従うことができます。Cocoa/Cocoa Touch では、Copy、Alloc、Retain、またはNewという単語が含まれるメソッドは、ある時点で解放する必要があるオブジェクトを返します。これらは、保持カウントが +1 のオブジェクトを返すメソッドに適用される命名規則です。これらのメソッドを呼び出すクラスは、オブジェクトを「所有」し、処理が終了したときにオブジェクトを解放する責任があります。

お役に立てれば。

于 2010-02-03T14:24:59.760 に答える
5

どちらも自動解放されます。つまり、自分で解放する必要はありません。経験則では、 +alloc または -copy を送信するか、オブジェクトを明示的に保持する場合、オブジェクトを所有していることになります。

  • [[SomeClass alloc] init...]
  • [someObject コピー]
  • [いくつかのオブジェクトが保持されます]

オブジェクトを所有している場合は、それを解放する必要があります。+new は +alloc および -init へのショートカットです。

于 2010-02-03T14:26:00.167 に答える