为什么我的popover在iPhone6Plus的iOS8.1中崩溃?iOS 8运行正常(实际上是Xcode 6.0到6.1错误)
我很高兴看到苹果在iOS 8中允许iPhone上使用Popover(在某些情况下,更大的iPhone,仅适用于横向),我将一些代码从显示UIPickerview切换到UIPopoverController,就像我在iPad应用程序中使用的一样。现在我收到了关于iOS 8.1崩溃的报告,在我的测试中,我在下面的第二行看到了崩溃:为什么我的popover在iPhone6Plus的iOS8.1中崩溃?iOS 8运行正常(实际上是Xcode 6.0到6.1错误),ios,ios8,uipopovercontroller,Ios,Ios8,Uipopovercontroller,我很高兴看到苹果在iOS 8中允许iPhone上使用Popover(在某些情况下,更大的iPhone,仅适用于横向),我将一些代码从显示UIPickerview切换到UIPopoverController,就像我在iPad应用程序中使用的一样。现在我收到了关于iOS 8.1崩溃的报告,在我的测试中,我在下面的第二行看到了崩溃: XfrGraphTypeVC *graphTypePopover = [[XfrGraphTypeVC alloc]
XfrGraphTypeVC *graphTypePopover = [[XfrGraphTypeVC alloc]
initWithNibName:@"XfrGraphTypeVC"
bundle:[NSBundle mainBundle]
type:xfrChannelMode cellHeight:cellHt];
self.popoverController = [[NSClassFromString(@"UIPopoverController") alloc] initWithContentViewController:graphTypePopover];
我尝试了一些方法来解决这个问题,但没有成功。在iPad上仍然可以正常工作。苹果打碎了什么东西吗
编辑:仍不工作。苹果在8.1中做了一些改变,打破了这一局面。会发生什么事
编辑:现在我认为这是从Xcode 6.1开始的,因为用Xcode 6.0构建的应用不会崩溃
事故日志:
Incident Identifier: CD6192B8-363D-4EAB-9392-8A366D1FD10C
CrashReporter Key: 797d45c1f30283e0885ce0a30c88ccdf6fd78036
Hardware Model: iPhone7,1
Process: AudioTools [4530]
Path: /private/var/mobile/Containers/Bundle/Application/5EDE9ACF-5372-45B8-B370-3AFFD345ED24/AudioTools.app/AudioTools
Identifier: com.studiosixdigital.audiotools
Version: 7.3.11 (7.3.11)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2014-11-11 17:10:31.927 -0800
Launch Time: 2014-11-11 17:10:26.147 -0800
OS Version: iOS 8.1 (12B411)
Report Version: 105
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x2379fc1f _exceptionPreprocess + 127
1 libobjc.A.dylib 0x30fafc8b objc_exception_throw + 38
2 CoreFoundation 0x2379fb65 +[NSException raise:format:] + 112
3 UIKit 0x26e8a41b -[UIPopoverController _initWithContentViewController:popoverControllerStyle:] + 266
4 AudioTools 0x004f4065 0x69000 + 4763749
5 UIKit 0x26c8fc2b -[UIApplication sendAction:to:from:forEvent:] + 70
6 UIKit 0x26c8fbd1 -[UIControl sendAction:to:forEvent:] + 44
7 UIKit 0x26c7a863 -[UIControl _sendActionsForEvents:withEvent:] + 582
8 UIKit 0x26c8f63d -[UIControl touchesEnded:withEvent:] + 588
9 UIKit 0x26c8f317 -[UIWindow _sendTouchesForEvent:] + 522
10 UIKit 0x26c88be1 -[UIWindow sendEvent:] + 544
11 UIKit 0x26c5f3dd -[UIApplication sendEvent:] + 196
12 UIKit 0x26ed2c29 _UIApplicationHandleEventFromQueueEvent + 13888
13 UIKit 0x26c5de39 _UIApplicationHandleEventQueue + 1296
14 CoreFoundation 0x23766377 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
15 CoreFoundation 0x23765787 __CFRunLoopDoSources0 + 218
16 CoreFoundation 0x23763ded __CFRunLoopRun + 772
17 CoreFoundation 0x236b2211 CFRunLoopRunSpecific + 476
18 CoreFoundation 0x236b2023 CFRunLoopRunInMode + 106
19 GraphicsServices 0x2aa650a9 GSEventRunModal + 136
20 UIKit 0x26cbe1d1 UIApplicationMain + 1440
21 AudioTools 0x0007c647 main + 50
22 AudioTools 0x0006d028 start + 40
好的,我下载了Xcode 6.0.1,现在所有这些都可以正常工作了。这是苹果在Xcode 6.1中打破的。我以为是在iOS 8.1中,因为这是同时发生的。
UIPOPCovercontroller
仍然只适用于iPad
发件人:
Popover控制器仅用于iPad设备。
尝试在其他设备上创建一个会导致异常
所以它在iPhone设备上不起作用。可能他们在上一版本中破坏了某些东西,这就是为什么它对您有效。您能分享导致崩溃的异常吗?应该显示在控制台中。刚刚添加。哇,谁否决了这个,苹果?为什么这是
[NSClassFromString(@“UIPopoverController”)alloc]
而不是[UIPopoverController alloc]
?你能把崩溃日志符号化吗?那只是为了防止在不支持弹出的旧iOS上崩溃。我会试着去象征。