Yeah, so `dequeueReusableCellWithIdentifier:` can return nil if there's no reusable cell to dequeue. So the proper usage of that method is like this:

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

If you get a nil cell from the dequeue method and don't alloc init a new one, you'll get a blank row in your table view. If you use the newer method, `dequeueReusableCellWithIdentifier:forIndexPath:`, you're guaranteed to always get a cell, so you don't need the nil check. From [the docs](https://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/dequeueReusableCellWithIdentifier:forIndexPath:): "This method always returns a valid cell."