Вопрос по ios – iOS CALayerInvalidGeometry

1

У меня есть приложение, которое падает, с этим сообщением:

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [2.74665e-34 nan]'

вот более подробное сообщение об исключении:

<code>CALayer position contains NaN: [2.74665e-34 nan]
2012-04-05 15:48:00.185 Infectious[28198:fb03] (
    0   CoreFoundation                      0x0226803e __exceptionPreprocess + 206
    1   libobjc.A.dylib                     0x02820cd6 objc_exception_throw + 44
    2   CoreFoundation                      0x02210a48 +[NSException raise:format:arguments:] + 136
    3   CoreFoundation                      0x022109b9 +[NSException raise:format:] + 57
    4   QuartzCore                          0x00df3c0d _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 155
    5   QuartzCore                          0x00de9f55 -[CALayer setPosition:] + 68
    6   QuartzCore                          0x00de9a0a -[CALayer setFrame:] + 675
    7   UIKit                               0x00efbfb8 -[UIView(Geometry) setFrame:] + 198
    8   UIKit                               0x010071a1 -[UILabel setFrame:] + 233
    9   Infectious                          0x00010e10 -[SusceptibilityHistoryController buildHistogram:] + 9648
    10  Infectious                          0x0000db7e -[SusceptibilityHistoryController viewDidLoad] + 1742
    11  UIKit                               0x00f8fa1e -[UIViewController view] + 184
    12  UIKit                               0x00f8fd11 -[UIViewController contentScrollView] + 36
    13  UIKit                               0x00fa18fd -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 36
    14  UIKit                               0x00fa1aef -[UINavigationController _layoutViewController:] + 43
    15  UIKit                               0x00fa1dbb -[UINavigationController _startTransition:fromViewController:toViewController:] + 303
    16  UIKit                               0x00fa285f -[UINavigationController _startDeferredTransitionIfNeeded] + 288
    17  UIKit                               0x00fa2e06 -[UINavigationController pushViewController:transition:forceImmediate:] + 989
    18  UIKit                               0x00fa2a24 -[UINavigationController pushViewController:animated:] + 62
    19  Infectious                          0x0000851d -[RecentSusceptibilityController tableView:didSelectRowAtIndexPath:] + 269
    20  UIKit                               0x00f595c5 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 1164
    21  UIKit                               0x00f597fa -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 201
    22  Foundation                          0x017ee85d __NSFireDelayedPerform + 389
    23  CoreFoundation                      0x0223c936 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
    24  CoreFoundation                      0x0223c3d7 __CFRunLoopDoTimer + 551
    25  CoreFoundation                      0x0219f790 __CFRunLoopRun + 1888
    26  CoreFoundation                      0x0219ed84 CFRunLoopRunSpecific + 212
    27  CoreFoundation                      0x0219ec9b CFRunLoopRunInMode + 123
    28  GraphicsServices                    0x0315a7d8 GSEventRunModal + 190
    29  GraphicsServices                    0x0315a88a GSEventRun + 103
    30  UIKit                               0x00ec8626 UIApplicationMain + 1163
    31  Infectious                          0x0001131b main + 187
    32  Infectious                          0x00002365 start + 53
</code>

что я должен искать?

Я читал, что может быть деление на ноль?

Что еще может быть подозреваемым в этой аварии?

Спасибо!

Ваш Ответ

1   ответ
2

Проблема между этими функциями:

8   UIKit        -[UILabel setFrame:] + 233
9   Infectious   -[SusceptibilityHistoryController buildHistogram:] + 9648

Ты звонишьlabel.frame = ...и, возможно, вычислить значение каким-либо образом, и в результате получается NaN, что означает «не число» и, как вы правильно предположили, это может быть результатом операции деления на ноль. Но это может появиться по многим другим причинам:http://en.wikipedia.org/wiki/NaN

Пройдите через функцию, называемую «buildHistogram:», найдите вызов либо «setFrame» или & quot; .frame = & quot; и найдите, как вычисленная позиция может стать NaN. Если есть деление, вероятно, это будет деление на ноль.

Похожие вопросы