2014-02-06 32 views
1

我有一个奇怪的问题,每当我在iPad模拟器上运行我的应用程序它完美的作品,但如果我尝试在真正的设备(iPad空气iOS 7.0.4)尝试这段代码。模拟器上的Xcode应用程序工作,在真实设备崩溃

我有:

嵌入在主详细拆分视图控制器

导航控制器(将调用A) - >更换赛格瑞 - >

的UITableViewController - >更换赛格瑞 - >

someViewController(将呼叫B)

现在..将segue替换回导航控制器(全部为主控细节),并且在此仅在实际设备上坠毁,仅给出:(lldb)

现在这是B实施

- (IBAction)backToTable:(id)sender 
{ 
    id detail = self.splitViewController.viewControllers[1]; 
    if(detail) { // iPad 
     [self performSegueWithIdentifier:@"backToTable" sender:self]; 
    } 
    else  // iPhone 
     [self dismissViewControllerAnimated:YES completion:nil]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"backToTable"]){ 
     ViewControllerA *destViewController = [[[segue destinationViewController] viewControllers] objectAtIndex:0]; 
     destViewController.boolForSegue = @"true"; 
    } 
} 

,这是一个

.h 
@property (strong) NSString *boolForSegue; 

.m 

-(void)viewWillAppear:(BOOL)animated 
{ 
    if ([_boolForSegue isEqualToString:@"true"]){ 
     [self unlockView]; 
    } 
} 

- (void)unlockView 
{ 
    [self performSegueWithIdentifier:@"mySegue" sender:self]; 
} 

我再说一遍,在模拟器工作完全没有问题的。可能是什么问题呢??

编辑:

crash log 
Date/Time:   2014-02-06 23:00:34.420 +0100 
OS Version:   iOS 7.0.4 (11B554a) 
Report Version:  104 

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000153edbeb8 
Triggered by Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib     0x00000001908879d0 objc_msgSend + 16 
1 UIKit       0x00000001873fb09c -[UISearchBar willMoveToSuperview:] + 64 
2 UIKit       0x00000001875d4ea0 __UIViewWillBeRemovedFromSuperview + 188 
3 UIKit       0x00000001873043f0 -[UIView(Hierarchy) removeFromSuperview] + 68 
4 UIKit       0x00000001873074f8 -[UIView dealloc] + 420 
5 UIKit       0x00000001873eb350 -[UIScrollView dealloc] + 968 
6 UIKit       0x00000001874abc3c -[UITableView dealloc] + 1300 
7 UIKit       0x000000018749c108 -[UIViewController dealloc] + 460 
8 UIKit       0x00000001875205f8 -[UITableViewController dealloc] + 288 
9 UIKit       0x000000018782cdc4 -[UIStoryboardSegue dealloc] + 68 
10 libobjc.A.dylib     0x00000001908893d0 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 520 
11 CoreFoundation     0x000000018433589c _CFAutoreleasePoolPop + 24 
12 UIKit       0x00000001872fde34 _wrapRunLoopWithAutoreleasePoolHandler + 72 
13 CoreFoundation     0x00000001843f77dc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 28 
14 CoreFoundation     0x00000001843f4a64 __CFRunLoopDoObservers + 368 
15 CoreFoundation     0x00000001843f4df0 __CFRunLoopRun + 760 
16 CoreFoundation     0x0000000184335b34 CFRunLoopRunSpecific + 448 
17 GraphicsServices    0x0000000189d1782c GSEventRunModal + 164 
18 UIKit       0x00000001873740e4 UIApplicationMain + 1152 
19 MasterSecurity     0x000000010006f688 main (main.m:16) 
20 libdyld.dylib     0x0000000190e77a9c start + 0 

Thread 1: 
0 libsystem_kernel.dylib   0x0000000190f59ac8 kevent64 + 8 
1 libdispatch.dylib    0x0000000190e5dd74 _dispatch_mgr_thread + 48 

Thread 2: 
0 libsystem_kernel.dylib   0x0000000190f72e74 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x0000000190ff17a4 start_wqthread + 0 

Thread 3: 
0 libsystem_kernel.dylib   0x0000000190f72e74 __workq_kernreturn + 8 
1 libsystem_pthread.dylib   0x0000000190ff17a4 start_wqthread + 0 

Thread 0 crashed with ARM Thread State (64-bit): 
    x0: 0x00000001701669c0 x1: 0x000000018798d5a1 x2: 0x0000000000000000 x3: 0x0000000000000000 
    x4: 0x0000000000000000 x5: 0x0000000000000000 x6: 0x0000000000000000 x7: 0x0000000000000000 
    x8: 0x0000000191a40750 x9: 0x0000000153edbea8 x10: 0x000011d61ce68cd1 x11: 0x000000050000000f 
    x12: 0x00000001703e35e0 x13: 0xbaddd0ad53edbead x14: 0x000000000000004c x15: 0x0000000170036440 
    x16: 0x00000001908879c0 x17: 0x00000001908a1b6c x18: 0x0000000000000000 x19: 0x000000012450fdc0 
    x20: 0x0000000124846a00 x21: 0x0000000191a7f000 x22: 0x0000000124846a00 x23: 0x0000000191a83000 
    x24: 0x000000000000001e x25: 0x000000018798df25 x26: 0x0000000124513b40 x27: 0x0000000000000001 
    x28: 0x0000000191ac3550 fp: 0x000000016fda21c0 lr: 0x00000001873fb1d0 
    sp: 0x000000016fda21a0 pc: 0x00000001908879d0 cpsr: 0x20000000 
+0

粘贴崩溃日志 – Pawan

+0

是否添加了异常断点?如果是这样,它停止执行的线是什么?另外,如果你点击继续,直到程序关闭,那个错误会被吐出来吗? – Gavin

+0

@Gavin没有断点 – r4id4

回答

2

在你一个实施过程,在viewWillAppear:(视图控制器完成之前出现)你调用一个调用performSegueWithIdentifier:,这将尝试显示另一个视图控制器的方法。您必须等到第一轮赛事首先完成。因此,如果您将该呼叫转移到viewDidAppear:,它将解决您的问题。

请记住,不要试图显示视图控制器,而另一个仍处于显示过程中。

+0

我改变viewDidAppear,但它仍然崩溃! :(同样的问题,也继续在调试器不起作用 – r4id4

+0

也写在这里,我把一些日志,看到应用程序崩溃后,VC B的viewDidLoad,显然没有任何理由,因为没有方法在任何线程运行,因为所有的IBAction和委托方法的加载没有任何问题的选择器视图,所以唯一的可能是替换从tableVC(导航栏项目,而不是行)到VC B,我试图用push segue取代它,而我在真正的iPad上完美工作,无法找出原因,无论如何,感谢您的帮助Gavin – r4id4

相关问题