当试图打开每个备用构建的特定模式视图时,iPhone上的应用程序崩溃
我有一个模式视图控制器,它根据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 /模拟器的应用程序(删除从设备/模拟器的应用程序后)一个干净的构建。该应用程序似乎正在使用此方法正常工作。我能否认为在应用商店上传应用是安全的?
,我应该如何进行调试,将大大帮助我的任何建议:)
感谢
我想这是不建议在同一循环迭代内模态地显示两个控制器。
尝试(如果上的iOS4 +使用块或创建一个方法,并通过performSelector:withObject:afterDelay:0.1f
称之为)之后的某个小的延迟呈现第二控制器。
无论如何,我无法解释每两秒发生一次这种奇怪的事情。您是否意外地在每次执行过程中翻转了一些设置(例如isLoggedIn = !isLoggedIn;
并将其保留在NSUserDefaults
中)。
viewDidLoad方法应该在模态的呈现之前被调用(即,当它被分配和初始化时)。你能告诉我们你在哪里以及如何创建你的loginPopup吗? – MishieMoo 2010-09-23 15:19:08
不,视图加载后调用viewDidLoad方法。视图首先在UIViewController属性'view'被访问时加载 - 通常在视图的控制器被按下或者在这种情况下以模态方式呈现时。 – Michal 2010-09-23 18:40:47