2010-09-23 26 views
2

我有一个模式视图控制器,它根据if条件调用viewDidLoad中的另一个模式视图控制器。当试图打开每个备用构建的特定模式视图时,iPhone上的应用程序崩溃

我面对怪异的问题是,我第一次编译应用程序,并打开第一个模态视图控制器,它工作正常,并继续显示第二视图控制器。现在,如果我停止应用程序执行并重建&运行该应用程序,则当我打开第一个模式视图时,该应用程序崩溃(仅冻结主屏幕按钮)。

这是错误我得到:

Detected an attempt to call a symbol in system libraries that is not present on the iPhone: 
_Unwind_Resume called from function -[NSArray makeObjectsPerformSelector:] in image CoreFoundation. 
2010-09-23 20:19:56.526 MySuperDuperApp[6117:207] CoreAnimation: ignoring exception: [<TwitterLogin 0x7484dc0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key actionButton. 

TwitterLogin是无法显示第二模态视图控制器的名称。

我试着把NSLogs检查它到底在哪里崩溃。

//... part of the method which is called in 
    // viewDidAppear of first modal view controller. 
    - (void)login { 
    NSLog(@"Begin TwitterBasicVC login");  
    loginPopup = [[TwitterLogin alloc] init]; 
    loginPopup.oAuth = oAuth; 
    loginPopup.viewDelegate = self; 
    loginPopup.interfaceDelegate = self; 

    // Show Login screen. 
    loginPopup.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    NSLog(@"presenting loginPopup modalView"); 
    [self presentModalViewController:loginPopup animated:YES]; 
    [loginPopup release]; 
    NSLog(@"End TwitterBasicVC login"); 

    //... viewDidLoad of second modal view controller. 
    - (void)viewDidLoad { 
    NSLog(@"Begin TwitterLogin viewDidLoad"); 
     [super viewDidLoad]; 
    queue = [[NSOperationQueue alloc] init]; 
    ... 

在 '呈递loginPopup modalView' 消息被打印,然而, '开头TwitterLogin viewDidLoad中' 不打印信息。 我不知道为什么它在模态视图呈现和viewDidLoad之间崩溃。

更奇怪的是,这种情况每隔一段时间就会发生/运行应用程序。 (我试过删除应用程序并构建它,但它仍然发生)

编辑:我已经添加了登录方法的第一行,其中twitterLogin是alloc-inited。 我也试着用performSelector:withObject:afterDelay调用值为0.0和1.0的方法,问题仍然存在。

编辑2:我做每一次我尝试安装在iPhone /模拟器的应用程序(删除从设备/模拟器的应用程序后)一个干净的构建。该应用程序似乎正在使用此方法正常工作。我能否认为在应用商店上传应用是安全的?

,我应该如何进行调试,将大大帮助我的任何建议:)

感谢

+0

viewDidLoad方法应该在模态的呈现之前被调用(即,当它被分配和初始化时)。你能告诉我们你在哪里以及如何创建你的loginPopup吗? – MishieMoo 2010-09-23 15:19:08

+0

不,视图加载后调用viewDidLoad方法。视图首先在UIViewController属性'view'被访问时加载 - 通常在视图的控制器被按下或者在这种情况下以模态方式呈现时。 – Michal 2010-09-23 18:40:47

回答

0

我想这是不建议在同一循环迭代内模态地显示两个控制器。

尝试(如果上的iOS4 +使用块或创建一个方法,并通过performSelector:withObject:afterDelay:0.1f称之为)之后的某个小的延迟呈现第二控制器。

无论如何,我无法解释每两秒发生一次这种奇怪的事情。您是否意外地在每次执行过程中翻转了一些设置(例如isLoggedIn = !isLoggedIn;并将其保留在NSUserDefaults中)。

+0

感谢您的评论米哈尔...对不起,我忘了提及。我曾试着用performSelector:withObject:afterDelay并且问题依然存在..我用0.0和1.0秒试过了.. – srik 2010-09-24 05:23:54

+0

我没有保存任何数据..虽然我会检查一下我使用的其他第三方类是否做一些事情..即使我想知道如果在模态视图中使用模态视图毕竟是一个好主意:( – srik 2010-09-24 05:25:13

相关问题