更新到iOS 4.2 SDK后,我在我的应用程序中收到以下异常:
Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 22]'
(请参阅下面的调用堆栈副本)
详细说明:
带有视频标记的' - UIWebView
位于UIScrollView
' - 视频可以在UIWebView
内播放,但是当尝试放大并使用播放器中的缩小或完成按钮时,应用程序会崩溃并显示所述异常。
这不会发生在SDK 3.2
*** Call stack at first throw:
(
0 CoreFoundation 0x01150be9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x012a55c2 objc_exception_throw + 47
2 CoreFoundation 0x01109628 +[NSException raise:format:arguments:] + 136
3 CoreFoundation 0x0110959a +[NSException raise:format:] + 58
4 QuartzCore 0x0200996a _ZL18CALayerSetPositionP7CALayerRKN2CA4Vec2IdEEb + 177
5 QuartzCore 0x020098b5 -[CALayer setPosition:] + 42
6 QuartzCore 0x020097cc -[CALayer setFrame:] + 763
7 UIKit 0x0030d307 -[UIView(Geometry) setFrame:] + 255
8 UIKit 0x003e6add -[UISlider setFrame:] + 166
9 MediaPlayer 0x00f0faee -[MPDetailSlider setFrame:] + 78
10 MediaPlayer 0x00f267b7 -[MPWildcatFullScreenVideoOverlay layoutSubviews] + 1280
11 QuartzCore 0x0200e451 -[CALayer layoutSublayers] + 181
12 QuartzCore 0x0200e17c CALayerLayoutIfNeeded + 220
13 QuartzCore 0x0200737c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
14 QuartzCore 0x020070d0 _ZN2CA11Transaction6commitEv + 292
15 QuartzCore 0x020377d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99
16 CoreFoundation 0x01131fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
17 CoreFoundation 0x010c70e7 __CFRunLoopDoObservers + 295
18 CoreFoundation 0x0108fbd7 __CFRunLoopRun + 1575
19 CoreFoundation 0x0108f240 CFRunLoopRunSpecific + 208
20 CoreFoundation 0x0108f161 CFRunLoopRunInMode + 97
21 GraphicsServices 0x01a85268 GSEventRunModal + 217
22 GraphicsServices 0x01a8532d GSEventRun + 115
23 UIKit 0x002e642e UIApplicationMain + 1160
24 ecom 0x000022c0 main + 102
25 ecom 0x00002251 start + 53
)
terminate called after throwing an instance of 'NSException'
答案 0 :(得分:6)
自iOS 4.2以来,MoviePlayer内滑块的帧大小计算似乎存在问题。
如果框架的宽度设置在 143.0 和 235.0 之间,则会发生此异常。
答案 1 :(得分:1)
我的UIScrollView出现了类似的问题。我在iOS文档中注意到了这个警告:
重要提示:你不应该嵌入 UIWebView或UITableView对象 UIScrollView对象。如果你这样做, 可能导致意外行为,因为 两个对象的触摸事件可以 混淆和错误处理。
我在scrollView中嵌入了一个UITextView。删除它解决了我的问题。
答案 2 :(得分:0)
我对从UIScrollView继承的类也有同样的问题。解决方案很奇怪:我没有使用“initWithFrame”,而是使用“init”并在下一行手动设置框架。这解决了我的问题。
仅在一个特定对象上出现问题 - 我在程序的其他部分使用“initWithFrame”创建了相同类型的对象而没有任何问题。问题也出现在iOS 4.2的iPhone 4上。它在带有iOS 4.1的iPhone 4和带有iOS 4.2的iPad上都没有问题。
答案 3 :(得分:0)
我开始使用4.2和Xcode 4.2.5(仅在模拟器中 - 从不在真正的4.2设备上)和CAGradientLayer代码用于单元格的渐变背景 - 这是否则在少数其他应用程序上工作正常,
幸运的是,使用Try-Catch块围绕代码确实会产生expcetion,但是没有出现可见的人工制品,所有单元格仍然具有渐变背景。