You are creating an instance of FirstViewController, setting the value of array and then releasing that instance which will deallocate the object. So the entire effort is wasted. Since this is in the SecondViewController, I am assuming the FirstViewController exists by this time so you shouldn't be setting the array of a new instance of FirstViewController but try to pass it to the existing instance. Since you already have a property declared to share across the view controllers, we will make use of it.
Do this when instantiating the SecondViewController instance in FirstViewController,
SecondViewController * viewController = [[SecondViewController alloc] init];
self.array = [NSMutableArray array];
viewController.arraySecond = self.array;
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
Now the array is shared across the view controllers. Do not initialize the arraySecond property elsewhere so that both of them keep pointing to the same object and the changes your make to arraySecond are visible to the FirstViewController instance. After coming back to the FirstViewController instance, access the values you've added using array property.
Alternatives to object sharing are delegate mechanism and notifications. You can look into them too. For now, this should work.