WithFirstViewController *firstViewArray = [[FirstViewController alloc] init]; what you are actually saying is create a new instance of FirstViewController called firstViewArray, not actually creating an array called firstViewArray.