2012-06-27 2 views
1

Я поддерживаю портрет только ATM, я получаю эти ошибки при повороте устройства:IOS Вращающийся телефон врезается

[__NSCFData setProperRotation]: unrecognized selector sent to instance 0x2dc890 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData setProperRotation]: unrecognized selector sent to instance 0x2dc890' 

Это в iOS5.1. Первоначально я просто оставил по умолчанию портретное предложение, но изменил его на:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
if (interfaceOrientation == UIInterfaceOrientationPortrait) { // Or whatever orientation it will be presented in. 
     return YES; 
    } 
    return NO; 
} 

Я использую ARC кстати.

Надеясь, что это поможет остановить сбой. У моего info.plist есть портрет и портрет вверх ногами. Там нет ничего другого я сделал то будет склад практика, кроме моего главного вида имеет несколько ViewControllers и его значение:

self.wantsFullScreenLayout=YES; 

Любых идеи народы? Заранее спасибо.

Мой проект добавляет главный вид из AppDelegate как таковой:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 
mainViewController=[[MainViewController alloc] init]; 

[self.window addSubview:mainViewController.view]; 

И у меня есть 2 ViewControllers на этом mainViewController и я использую навигации контроллер нажать несколько ViewControllers как таковой:

- (void) loadActionsView { 


NSArray* views = [self.navigationController viewControllers]; 

if ([views containsObject: actionsPanelViewController]) 
{ 
    [self.navigationController popToViewController:actionsPanelViewController animated:YES]; 
} else { 

    [self.navigationController pushViewController:actionsPanelViewController animated:YES]; 
} 

[[StateModel stateModel] setCurrentScreenIndex:0]; 

}

Это первый вид, который называется btw.

Update 2 с решения/проблемы найдено:

Я использовал часть SHK SHKActivityIndicator, что было уведомление, что было захватывая вращение экрана и его селекторы, где вызывает вопрос:

[[NSNotificationCenter defaultCenter] addObserver:currentIndicator selector:@selector(setProperRotation) name:UIDeviceOrientationDidChangeNotification object:nil]; 
+1

Используйте CTRL + Shift + F и ищите «setProperRotation» или даже просто «properRotation», , Или это может быть какая-то внутренняя ящерица NSData, NSCFData - посредник в конце концов. – CodaFi

ответ

1

Похоже, что ваш ViewController выпущен, а другой объект получает сообщение setProperRotation. Проверьте, жив ли ваш ViewController.

mainViewController=[[MainViewController alloc] init]; 
[self.window addSubview:mainViewController.view]; 

вот и проблема. Вы добавляете только представление. ARC считает, что вам больше не нужен ваш MainViewController.

  • Сделать MainViewController в качестве переменной класса или
  • множества window.rootViewController

    self.window.rootViewController = mainViewController; 
    
+0

Добавленные обновления к вопросу Chakalaka – elliotrock

+0

попробуйте это: o) и получайте удовольствие – Chakalaka

+0

Хорошо, я сделал это изменение, но его все еще сбой, не уверен, как «Сделать MainViewController как переменную класса» ?.Я также думаю, что, поскольку я добавляю 2 ViewControllers в этот mainViewController, они останавливают распространение toAutorotateToInterfaceOrientation на этот mainViewController. Спасибо, кучи. – elliotrock

0

Исключение показывает, что вы, вероятно, более-рилизинг-объект, который, как предполагается, отвечает на -setProperRotation , Посмотрите на этот объект и попытайтесь понять, где вы забыли его сохранить (например, отслеживать его сохранение и релизы с помощью инструмента выделения объектов)

+0

Я использую ARC Julien. – elliotrock

+0

Обновлено с подробностями Жюльен. – elliotrock

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