Предупреждающее сообщение Попытка создать переменную USE_BLOCK_IN_FRAME с блоком, который не находится в кадре - PullRequest
0 голосов
/ 23 февраля 2012

При установке exception breakpoint и отладке выдается предупреждающее сообщение о том, что Catchpoint 2 (исключение выдается). Текущий язык: auto; в настоящее время цель-с предупреждение: попытка создать переменную USE_BLOCK_IN_FRAME с блоком, который не находится в кадре. (ГБД)

Что это значит.

В моем случае в mainviewcontroller на UIToolbar есть кнопка переключения плава, которая при нажатии воспроизводит аудиофайл и загружает 20 контроллеров представления один за другим, используя селектор выполнения

-(void)playpauseAction:(id)sender 
{

 if  

  ([audioPlayer isPlaying]){

 [sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateSelected];

 [audioPlayer pause];

  } else {

 [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];

 [audioPlayer play];

 [self performSelector:@selector(displayviewsAction:) withObject:nil afterDelay:11.0];

  }  

}

- (void)displayviewsAction:(id)sender
{
FirstViewController *viewController = [[FirstViewController alloc] init];

viewController.view.frame = CGRectMake(0, 0, 320, 480);

[self.view addSubview:viewController.view];

[self.view addSubview:toolbar];

[self performSelector:@selector(secondViewController) withObject:nil afterDelay:23];

[viewController release];

}

-(void)secondViewController {
SecondViewController *secondController = [[SecondViewController alloc] init];

secondController.view.frame = CGRectMake(0, 0, 320, 480);

[self.view addSubview:secondController.view]; 

[self.view addSubview:toolbar];

[self performSelector:@selector(ThirdviewController) withObject:nil afterDelay:27];

[secondController release];
}

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

У всех есть идеи, что происходит с точкой останова исключения.

1 Ответ

2 голосов
/ 23 февраля 2012

Это предупреждение отладчика, когда он не может создать информационную структуру для определенного объекта.

Вот пример:

NSString* string = [[NSString alloc] initWithUTF8String:line];

в этой строке кода метод initWithUTF8String: ожидает строку C в кодировке UTF-8, а не объект NSString. так что на этот раз complier даст предупреждение USE_BLOCK_IN_FRAME.

Мы должны убедиться, что все предупреждения решены, потому что это может быть большой ошибкой или приложение может упасть в ближайшем будущем.


Обновление:


-(void)playpauseAction:(id)sender 
{

    UIButton *btn = (UIButton *)sender;
      if([audioPlayer isPlaying]){

     [audioPlayer pause];   

     [btn setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];

      } else {

     [audioPlayer play];
     [btn setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];



 [self performSelector:@selector(displayviewsAction) withObject:nil afterDelay:11.0];

  }  

}

- (void)displayviewsAction
{
FirstViewController *viewController = [[FirstViewController alloc] initWithNibName:"FirstViewController"];

viewController.view.frame = CGRectMake(0, 0, 320, 480);

[self.view addSubview:viewController.view];

[self.view addSubview:toolbar];

[self performSelector:@selector(secondViewController) withObject:nil afterDelay:23];

[viewController release];

}

-(void)secondViewController {
SecondViewController *secondController = [[SecondViewController alloc] init];

secondController.view.frame = CGRectMake(0, 0, 320, 480);

[self.view addSubview:secondController.view]; 

[self.view addSubview:toolbar];

[self performSelector:@selector(ThirdviewController) withObject:nil afterDelay:27];

[secondController release];
}
...