Q:

last record displaying in all rows

I have an array of EventObject(s).  Each object has title and city and many others attributes.  I want to show title of cell as event title, and subtitle of cell as event city.  I tried doing that in the following, but I only get the last object displayed 4 times (that is the number of objects in the array).   
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

//    NSDate *object = _objects[indexPath.row];
//    cell.textLabel.text = [object description];

    EventObject *eventInstance = [[EventObject alloc] init];
    int row = [indexPath row];

    eventInstance = eventObjectsArray[row];
    cell.textLabel.text = eventInstance.eventTitle;
    NSLog(@"Event Title: %@", eventInstance.eventTitle);
    cell.detailTextLabel.text = eventInstance.eventCity;

    return cell;
}

What did I do wrong?  I am learning objective-c so beginners errors surely.  Thanks 
EDIT: This is how I am inserting objects:
 //get events from database
    eventsDictionary = [eventInstance getEventsObjects];

    //process each key in dictionary and assign to eventInstance
    for(id key in eventsDictionary)
    {
         eventInstance.eventId = [NSString stringWithFormat:@"%@", key[@"id"]];
         eventInstance.eventTitle = [NSString stringWithFormat:@"%@", key[@"title"]];
         eventInstance.eventDescription = [NSString stringWithFormat:@"%@", key[@"description"]];
         eventInstance.eventCity = [NSString stringWithFormat:@"%@", key[@"city"]];
         [eventObjectsArray addObject:eventInstance];
    }

A:

Suggestions
[This can be issue]
While adding objects in your eventObjectsArray make sure to have new insatnce of EventObject everytime before you add object
EventObject *eventInstance = [[EventObject alloc] init];
eventInstance.eventTitle = @"your title";
eventInstance.eventCity  = @"your city";
[eventObjectsArray addObject:eventInstance];

[This is suggestion as you should know this to improve your coding standard and memory management]
While retriving objects back from array you really don't need to have instance of custom object rather have refrence to it like
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    //EventObject *eventInstance = [[EventObject alloc] init]; //you don't need this
    int row = [indexPath row];

    EventObject *eventInstance = eventObjectsArray[row]; // make reference like this
    cell.textLabel.text = eventInstance.eventTitle;
    NSLog(@"Event Title: %@", eventInstance.eventTitle);
    cell.detailTextLabel.text = eventInstance.eventCity;

    return cell;
}

