title: cellForRowAtIndexPath called randomly and seems to leak memory
body: <p>In my app, I have the following <code>cellForRowAtIndexPath</code> method. As it is to my understanding, this method should only be called to display the cells that are currently able to be displayed on the screen. As can be seen, I have a <code>NSLog()</code> function that should display the row that the <code>tableView</code> should display.</p>
  
  <pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
      NSLog(@"%ld",(long)indexPath.row);
      PFObject *obj = [vars.feed objectAtIndex:indexPath.row];
      if([obj.parseClassName isEqualToString:@"ProductCategory"]) {
          CategoryTableCell *categoryCell = [tableView dequeueReusableCellWithIdentifier:categoryCellId forIndexPath:indexPath];
  
          ProductCategory *category = (ProductCategory*)obj;
          [categoryCell.nameLabel setText:category.name];
          [categoryCell.numItemsLabel setText:[NSString stringWithFormat:@"%d Items",[functions numberOfItemsInCategory:category]]];
          [categoryCell.banner setImage:[UIImage imageWithData:category.banner.getData]];
  
          return categoryCell;
      } else {
          ProductVerticalTableCell *productCell = [tableView dequeueReusableCellWithIdentifier:productCellId forIndexPath:indexPath];
          [productCell customInit];
  
          ProductPrice *pp = (ProductPrice*)obj;
          productCell.pp = pp;
          productCell.banner.image = [UIImage imageWithData:pp.product.banner.getData];
  
          return productCell;
      }
  }
  </code></pre>
  
  <p>The cell height is 175 and can only show 3 at a time on a iPhone 5. The results to be expected should be:</p>
  
  <pre><code>2014-09-16 13:55:06.331 Runn[38296:60b] 0
  2014-09-16 13:55:06.333 Runn[38296:60b] 1
  2014-09-16 13:55:06.335 Runn[38296:60b] 2
  </code></pre>
  
  <p>Indeed this is the only thing that shows up for a second in the logs, but then all of a sudden it goes through all the rows and logs out:</p>
  
  <pre><code>2014-09-16 13:55:06.331 Runn[38296:60b] 0
  2014-09-16 13:55:06.333 Runn[38296:60b] 1
  2014-09-16 13:55:06.335 Runn[38296:60b] 2
  2014-09-16 13:55:08.389 Runn[38296:60b] 3
  2014-09-16 13:55:08.393 Runn[38296:60b] 4
  2014-09-16 13:55:08.395 Runn[38296:60b] 5
  2014-09-16 13:55:08.396 Runn[38296:60b] 6
  2014-09-16 13:55:08.397 Runn[38296:60b] 7
  2014-09-16 13:55:08.399 Runn[38296:60b] 8
  2014-09-16 13:55:08.400 Runn[38296:60b] 9
  2014-09-16 13:55:08.401 Runn[38296:60b] 10
  2014-09-16 13:55:08.402 Runn[38296:60b] 11
  </code></pre>
  
  <p>Then as I scroll, straight down to the bottom, without going back up at all, the full log looks like this:</p>
  
  <pre><code>2014-09-16 13:55:06.331 Runn[38296:60b] 0
  2014-09-16 13:55:06.333 Runn[38296:60b] 1
  2014-09-16 13:55:06.335 Runn[38296:60b] 2
  2014-09-16 13:55:08.389 Runn[38296:60b] 3
  2014-09-16 13:55:08.393 Runn[38296:60b] 4
  2014-09-16 13:55:08.395 Runn[38296:60b] 5
  2014-09-16 13:55:08.396 Runn[38296:60b] 6
  2014-09-16 13:55:08.397 Runn[38296:60b] 7
  2014-09-16 13:55:08.399 Runn[38296:60b] 8
  2014-09-16 13:55:08.400 Runn[38296:60b] 9
  2014-09-16 13:55:08.401 Runn[38296:60b] 10
  2014-09-16 13:55:08.402 Runn[38296:60b] 11
  2014-09-16 13:55:13.428 Runn[38296:60b] 3
  2014-09-16 13:55:13.671 Runn[38296:60b] 4
  2014-09-16 13:55:13.905 Runn[38296:60b] 5
  2014-09-16 13:55:14.338 Runn[38296:60b] 6
  2014-09-16 13:55:16.494 Runn[38296:60b] 1
  2014-09-16 13:55:16.496 Runn[38296:60b] 2
  2014-09-16 13:55:21.856 Runn[38296:60b] 7
  2014-09-16 13:55:22.056 Runn[38296:60b] 8
  2014-09-16 13:55:22.340 Runn[38296:60b] 9
  2014-09-16 13:55:23.039 Runn[38296:60b] 10
  2014-09-16 13:55:24.551 Runn[38296:60b] 4
  2014-09-16 13:55:24.553 Runn[38296:60b] 5
  2014-09-16 13:55:24.554 Runn[38296:60b] 6
  </code></pre>