2012-06-27 124 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 btw。

希望能夠幫助制止崩潰。我的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]; 

而且我對mainViewController 2個ViewControllers和我使用的是導航控制器推幾個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的視圖。

更新2解決方案/發現問題:

我用的是新鴻基的SHKActivityIndi​​cator,這不得不說是捕捉屏幕旋轉和選擇,其中引起問題的通知的一部分:

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

使用CTRL + Shift + F搜索'setProperRotation',或者甚至只搜索「properRotation」 。或者它可能是一些內部的NSData jankiness,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,他們正在停止將shouldAutorotateToInterfaceOrientation傳播到該mainViewController。感謝堆。 – elliotrock

0

例外表明你可能在釋放這是爲了響應-setProperRotation對象。查找該對象並嘗試瞭解忘記保留的位置(例如,使用對象分配工具跟蹤其保留和釋放)

+0

我正在使用ARC Julien。 – elliotrock

+0

用更多細節Julien更新。 – elliotrock