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에 대한 모든 내용을 읽을 수 있습니다.

또한 NSMutableArrayaddObject 통해 개체에 전달을 유지한다. 그러나 이것이 어떻게 생각해야하는지는 아니며 구현 세부 사항으로 간주 될 수 있습니다. 중요한 것은 소유권 정책입니다.

+0

의심의 여지가 있습니다. 제발 도와주세요. 만약 내가 쓴다면 : TopicEntry * t = [TopicEntry alloc] init]; t = [topicActIndex : 0]; // 일부 작업을 수행했습니다 [t release]; 이 코드는 NSMutableArray에서 실제 객체를 릴리스 할 예정입니까? 제발 도와주세요, 전이 분야에 더 신선합니다. –

0

아니요, 메모리 할당에 관한 한 코드가 정상적으로 보입니다.

0

이드가 말한 것처럼 정확히 할 수 있습니다. rules은 임시 객체를 추가 할 때 유지하고 해제 될 때 해제합니다 (객체가 제거 된 경우).