Я не уверен, является ли это причиной вашей проблемы, но это может быть:
Вы создаете свой массив контроллеров, например:
NSArray *controllers = [NSArray arrayWithObjects:home, menu, so, events, info, nil];
Отлично. controllers
имеет количество сохраненных +0 (автоматически выпущенных).
Затем вы присваиваете его свойству viewControllers
tabBar:
tabBarController.viewControllers = controllers;
Это тоже хорошо. controllers
теперь имеет счет сохранения +1 (авто-релиз + сохранение на tabBarController
)
Затем вы отпускаете controllers
:
[controllers release];
controllers
теперь имеет счет сохранения +0, что означает, что в следующий раз при вращении runloop ваш массив будет освобожден, последующие представления исчезнут (потому что они были освобождены), и ваше приложение, вероятно, будет в конечном итоге сбой.
Простое исправление: вы не alloc
, retain
или copy
controllers
массив, поэтому вы не несете ответственности за release
его. Удалите release
, и ваше управление памятью будет правильным. Это может решить вашу проблему, потому что это единственное, что я сразу вижу, это может быть проблемой.