2012-04-23 2 views
0

Я пытаюсь выяснить, как лучше всего обрабатывать методы appDelegate для многозадачных изменений, и я хочу рассмотреть любое возможное поведение пользователя.Задача многозадачности с инициализацией iVar

Что произойдет, если у вас есть много Ивар инициализаций и просмотреть установки, происходящих в методе вашего взгляда контроллера:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

И хотя этот метод на полпути через, пользователь завершает работу вашего приложения. Но поскольку он поддерживает многозадачность, когда они снова открывают его, является ли описанный выше метод init просто продолжаться там, где он остановился?

Если да, то это причина, почему это лучше поместить инициализацию в указанном выше способе, а не в viewDidLoad так, если вы выходите из приложения в то время как viewDidLoad бежит, казалось бы, что viewDidLoad делает не забрать, где вы остановились, если затем снова запустите приложение.

ответ

1

Метод - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil завершит выполнение, при условии, что вы имеете в виду бросить курить, тот факт, что приложение подходит к фону.

Например попробуйте добавить следующее к этому методу и чем нажать кнопку, чтобы поместить приложение в фоновом режиме:

for (int a=0 ; a< 50000; a++) { 
     NSLog(@"t"); 
    } 

Вы должны увидеть, что регистрация продолжается после того, как вы отправите приложение для фона.

Чтобы ответить на ваш второй вопрос ... Вы должны выполнить инициализацию в init, потому что у вас есть уверенность, что он будет вызван только один раз на объект в прямом эфире и его самом начале. Конечно, если вы уничтожите некоторые объекты, например, в viewDidUnload, вы должны воссоздать их в viewDidLoad. Так что каждый раз зависит от того, как долго вы хотите, чтобы ценности ivars были вокруг. См. Например, такой вопрос: What exactly must I do in viewDidUnload?

Смежные вопросы