2014-01-22 3 views
-1

У меня есть следующий код, который вызывается, когда мой «GameOver сцена» появляются на 3-й раз:UIAlertView падает на Ios 7

_alert = [[UIAlertView alloc] initWithTitle:@"Congratulations!!!\n\n" 
        "bla bla vla!" 
        message:NULL 
              delegate:nil 
            cancelButtonTitle:@"No, thanks" 
            otherButtonTitles:@"Rate",@"Later",nil]; 
if (![settings boolForKey:@"ShouldNotRateLater"]) { 
     [_alert show]; 
} 

Он начал врезаться КСН 7 и это не произошло в Ios 5 или 6.

Я уже пробовал:

//[_alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES]; or 

/*dispatch_async(dispatch_get_main_queue(), ^{ 
      [_alert show]; 
      [_alert release]; 
     }); */ 

Те советы, которые я видел в других потоках, но она не работает для меня.

Кроме того, запуск NSZombie я получил следующий лог:

[UIImage isKindOfClass:]: message sent to deallocated instance 0x16da1dd0 

знает ли один, что я делаю неправильно?

Большое спасибо

+3

Что трассировки стека для аварии? Каково сообщение об ошибке для сбоя? – rmaddy

+1

Почему у вас есть заголовок с символами новой строки и пустое сообщение? Почему бы не поместить часть своей строки заголовка в качестве вашего сообщения? (Кроме того, вы все равно не должны пропускать NULL ...) –

+0

Здравствуйте! Я получаю код Exc_Bad_Acess = 1. Я пробовал как ноль для сообщения вместо NULL, и он все еще не работает. – user3216280

ответ

-2

Почему вы используете «NULL» для аргумента сообщения? Метод ожидает и указатель объекта, поэтому правильным способом является использование «nil», если вы не хотите никакого сообщения. Возможно, это и является причиной вашей проблемы.

+0

NULL не проблема, он работает просто отлично – Hannes

+0

Есть разница между правильностью и чем-то работающим ==, это не сбой ... но что угодно. Вторая часть моего поста - это гипотеза/предложение, а не факт. Это означает, что я не уверен в этом и предлагаю проверить его. Если вы чувствуете, что вам нужно отнять у меня 5 очков, наслаждайтесь им. –

+0

Целью ответов на верхний и нижний уровни не является то, чтобы забрать вашего представителя. точек, это должно поддерживать качество StackOverflow как можно выше. Я отклонил ваш ответ, потому что он не предоставляет полезной информации и ответа на его/ее проблему. Вы должны были оставить комментарий для этого. – Hannes

0

Я попробовал ваш код, как это и это работает:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Congratulations!!!\n\n" 
      "bla bla vla!" 
            message:NULL 
            delegate:nil 
          cancelButtonTitle:@"No, thanks" 
          otherButtonTitles:@"Rate",@"Later",nil]; 
[alert show]; 

Так как ваш _alert объявлен неправильный путь (слабый против сильного, как предполагает @Ramshad) или есть что-то не так с вашим ![settings boolForKey:@"ShouldNotRateLater"]

Пожалуйста, сообщите об ошибке, которую вы видите.

+0

Почему слабая и сильная проблема проявляется на iOS7, но не на iOS6? – Gruntcakes

+0

Мой код работает для меня, когда я вызываю его в первый раз, когда появляется экран gameOver, но он не работает, когда я вызываю его в 4-й или 5-й раз. Я попытался запустить код без необходимости! [Settings boolForKey: @ «ShouldNotRateLater»], и он по-прежнему сбой. – user3216280

+0

Ошибка, которую я получаю, это xc_Bad_Acess code = 1. Tks! – user3216280

0

установить @property в strong вместо weak

@property(nonatomic,strong) UIAlertView *alert; 
+0

1) Нет никаких признаков того, что есть свойство, не говоря уже о том, слабо оно или нет. 2) Даже если есть свойство, оно не используется, поэтому это не может быть проблемой. – rmaddy

+0

Я уже заявлял как сильный: S – user3216280

+0

Авария на этой линии [_alert show]; – user3216280

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