title: Using pointers in Objective C for NSMutableArray objects
body: <p>When retrieving objects from an NSMutableArray in cocoa-touch is the below code ok? Should I be allocating([alloc]) new Page objects each time or is just pointing to it alright? Do I need to do anything to the Page *pageObj after, such as set it to nil?</p>
  
  <pre><code>const char *sql = "insert into Page(Book_ID, Page_Num, Page_Text) Values(?, ?, ?)";
  for (i = 0; i &lt; ([[self pagesArray] count] - 1); i++) {
      if(addStmt == nil) {
          if(sqlite3_prepare_v2(database, sql, -1, &amp;addStmt, NULL) != SQLITE_OK) {
              NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
          }
      }
      Page *pageObj = [[self pagesArray] objectAtIndex:i];
      if(pageObj.isNew) {
          sqlite3_bind_int(addStmt, 1, self.book_ID); 
          sqlite3_bind_int(addStmt, 2, pageObj.page_Number);  
          sqlite3_bind_text(addStmt, 3, [[pageObj page_Text] UTF8String], -1, SQLITE_TRANSIENT);
          if(SQLITE_DONE != sqlite3_step(addStmt)) {
              NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
          }
          NSLog(@"Inserted Page: %i into DB. Page text: %@", pageObj.page_Number, pageObj.page_Text);
      }
      //Reset the add statement.
      sqlite3_reset(addStmt);                     
  }
  </code></pre>
  
  <p>Thanks. I also understand this should probably be in a transaction but I didn't quite get that working just yet.</p>