2011-10-05 10 views
0
を解放しました

私のプロジェクトでは、データベースから読み込まれたデータが割り当てられたオブジェクトに割り当てられます。オブジェクトがNSMutableArrayに追加された後。そしてオブジェクトが解放されます。このようなことに何か問題はありますか? 私のソースコード:NSMutable配列にオブジェクトを追加し、

 while (sqlite3_step(statement) == SQLITE_ROW) 
      { 
       TopicEntry *temp = [[TopicEntry alloc] init]; 
       ruleName = (char *)sqlite3_column_text(statement, 2); 

       [temp setTopicName:(ruleName) ?[NSString stringWithUTF8String:ruleName] :@""]; 
       [temp setParentID:(int)sqlite3_column_int(statement, 2)]; 
       [rules addObject:temp]; 
       [temp release]; 

      } 

答えて

1

あなたのコードはOKです。

あなたが考える必要があるのは、オブジェクトを所有しているときにそれを解放する必要があることだけです。 initメソッドを呼び出すと、それを所有するようになります。したがって、ポリシーに従うことで、それに関係なく、リリースする必要があります。ポリシーhereに関するすべてを読むことができます。

さらに、NSMutableArrayは、addObjectによって渡されたオブジェクトを保持します。しかし、これはどのように考えるべきかではなく、実装の詳細と考えることができます。重要なのは所有権ポリシーです。

+0

私は疑いがある、助けてください。 もし私が次のように書いていたら: TopicEntry * t = [TopicEntry alloc] init]; t = [topicAtIndex:0]; //いくつかのものをしました [t release]; このコードは、NSMutableArrayの実際のオブジェクトを解放しますか? 助けてください、私はこのフィールドにもっと敏感です –

0

いいえ、メモリ割り当てに関する限り、コードは正常に見えます。

0

IDは正確にそれを行う正しい方法だと言っています。 rulesは、追加時に一時オブジェクトを保持し、解放時に解放します(またはオブジェクトが削除されます)。

関連する問題