Программа получила EXC_BAD_ACCESS для InterfaceOrientation - PullRequest
0 голосов
/ 26 мая 2011
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight)){
        Add1.contentStretch=CGRectMake(0.00,0.00,1024.00,66.00);
        background.image = [UIImage imageNamed:@"back2-landscape.png"];
    } else  if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown)){
        Add1.contentStretch=CGRectMake(0.00,0.00,768.00,66.00);
        background.image = [UIImage imageNamed:@"back2-portrait.png"];
    }
    // Return YES for supported orientations
    return YES;
}

В этом коде я получаю EXC_BAD_ACCESS в точке

if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight))

Скажите, пожалуйста, почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 26 мая 2011

Проблема с курицей и яйцом
Вы не должны обращаться к свойству interfaceOrientation изнутри shouldAutorotateToInterfaceOrientation: метода, поскольку он создаст цикл.Не зная, какие ориентации интерфейса включены для контроллера представления, контроллер представления не может окончательно сказать вам, какова его ориентация (не путайте это с ориентацией устройства), но здесь вы вызываете его в рамках того же метода, который он использует для расчетавне его ориентации.Таким образом, это создает бесконечный цикл, который приводит к краху.

Вы не должны делать макеты в этом методе.Посмотрите на layoutSubviews.

...