2011-12-29 6 views
1

Так что я поставил цикл while в методе viewDidLoad для viewController, но когда я загружаю контроллер представления, он не работает и дает мне SIGTERM. Вот код цикла while.Пока цикл не работает

- (void)viewDidLoad 
{ 
while (appDelegate.gobletCheckInt == 0 || appDelegate.gobletCheckInt == 1) { 
    if (CGRectIntersectsRect(mainSprite.frame, getGobletImg.frame)) { 
     haveGobletImg.image = [UIImage imageNamed:@"Gold Goblet.png"]; 
    } 
} 

appDelegate = [[UIApplication sharedApplication]delegate]; 
getGobletImg.image = [UIImage imageNamed:@"Gold Goblet.png"]; 

}

Эти две последние строки не имеют большого значения. Так что я не должен помещать это в viewDidLoad?

ответ

1

Объект appDelegate заполняется после попытки его использования. Похоже, вам нужно переместить назначение appDelegate выше цикла while.

+0

Это не сработало. Любые другие предложения? –

+0

Не могли бы вы разместить часть трассировки стека? Какую строку останавливает отладчик, когда приложение завершается? Каковы значения ваших переменных-членов? Я не вижу, как работа над вами может работать без перемещения приложения appDelegate выше цикла while, но вам может потребоваться больше. Трудно сказать, не видя больше вашего кода. – user1118321

0

Это может быть убито во время выполнения для бесконечного цикла? Где вы устанавливаете gobletCheckInt для чего-то другого, кроме 0 или 1? Возможно, вам необходимо:

NSLog(@"%d", appDelegate.gobletCheckInt); 

Внутри вашего цикла.

Теперь я должен сделать обязательный tsk-tsk, что это действительно плохая архитектура. :) Вы не должны проверять свойства вашего делегата приложения из своего контроллера представления. Делегат приложения строго предназначен для приема сообщений из UIApplication, например, когда приложение запускается или завершается. Он не должен использоваться для сохранения состояния в свойствах.

+0

Вот что я хочу - это бесконечный цикл. gobletCheckInt никогда не совпадает ни с чем, кроме 1 или 0. Может быть, мне даже не нужен цикл. Я действительно хочу, чтобы этот код в цикле продолжал выполняться. –

+0

Затем вы должны выполнить его по таймеру. В основном переход в бесконечный цикл заставит вас убить во время выполнения, так как ваша программа перестанет отвечать на запросы. Прочитайте документы в NSTimer. Если вы хотите углубиться, вы можете запланировать материал в цикле выполнения программы, но это немного более продвинуто. (Я сделал это для таких вещей, как тестирование на доступность) –

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