我在运行应用程序时在控制台中看到此日志:
CALayer position contains NaN: [nan -0.5]
该应用由UITaBar
组成,其中第一个标签为UINavigationController
。在NavController
我正在发布AddressBookPicker
。在AddressBookPicker
我只选择显示电话号码。
当我选择仅包含电子邮件地址的联系人时,就是当我看到此日志时。
我没有看到任何崩溃或任何问题,只是打印到控制台上的日志。想要确保这不是一个在发布后崩溃的隐藏问题。
以下是相关代码和堆栈跟踪的片段。不确定要粘贴的代码的其他部分,请告诉我是否有任何可以发布的内容可能有所帮助。
感谢任何帮助/投入。
谢谢!
代码
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
NSArray *displayedItems = [NSArray arrayWithObjects: [NSNumber numberWithInt:kABPersonPhoneProperty]), nil];
picker.displayedProperties = displayedItems;
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
堆栈跟踪
#0 0x00096377 in NSLog
#1 0x046b38c9 in CALayerSetPosition
#2 0x046b3846 in -[CALayer setPosition:]
#3 0x046b375f in -[CALayer setFrame:]
#4 0x002f510b in -[UIView(Geometry) setFrame:]
#5 0x003dbe6d in -[UILabel setFrame:]
#6 0x023ed095 in -[ABPersonTableViewDataSource reloadNoValueLabelAnimated:]
#7 0x0244cf53 in -[ABPersonTableViewDataSource reloadDataIncludingHeaderView:invalidatePropertyData:]
#8 0x023f30d4 in -[ABPersonTableViewDataSource reloadDataIncludingHeaderView:]
#9 0x023eabc9 in -[ABPersonViewControllerHelper prepareViewWithDisplayedProperties:person:allowActions:]
#10 0x023ea6bc in -[ABPersonViewControllerHelper loadViewWithDisplayedProperties:person:allowDeletion:allowActions:]
#11 0x023ea598 in -[ABPersonViewController loadView]
#12 0x0036a54f in -[UIViewController view]
#13 0x003689f4 in -[UIViewController contentScrollView]
#14 0x003787e2 in -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:]
#15 0x00376ea3 in -[UINavigationController _layoutViewController:]
#16 0x0037812d in -[UINavigationController _startTransition:fromViewController:toViewController:]
#17 0x00372ccd in -[UINavigationController _startDeferredTransitionIfNeeded]
#18 0x00379d8b in -[UINavigationController pushViewController:transition:forceImmediate:]
#19 0x00372b67 in -[UINavigationController pushViewController:animated:]
#20 0x02403bc2 in -[ABPeoplePickerNavigationController pushViewController:animated:]
#21 0x0242a424 in -[ABPeoplePickerNavigationController showCardForPerson:withMemberCell:animate:forceDisableEditing:personViewController:]
#22 0x0242ce20 in -[ABMembersViewController showCardForPerson:withMemberCell:animate:]
#23 0x0240a0ef in -[ABMembersController abDataSource:selectedPerson:atIndexPath:withMemberCell:animate:]
#24 0x023fdb47 in -[ABMembersDataSource tableView:didSelectRowAtIndexPath:]
#25 0x00333a48 in -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]
#26 0x0032a32e in -[UITableView _userSelectRowAtIndexPath:]
#27 0x0003f21a in __NSFireDelayedPerform
#28 0x02631f73 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
#29 0x026335b4 in __CFRunLoopDoTimer
#30 0x0258fdd9 in __CFRunLoopRun
#31 0x0258f350 in CFRunLoopRunSpecific
#32 0x0258f271 in CFRunLoopRunInMode
#33 0x02f2f00c in GSEventRunModal
#34 0x02f2f0d1 in GSEventRun
#35 0x002ceaf2 in UIApplicationMain
#36 0x00002554 in main at main.m:14
答案 0 :(得分:1)
这似乎导致iOS 4.2崩溃。尝试选择没有电话号码的联系人,您应该转到“无电话号码”的视图。当您返回“所有联系人”然后再次选择该联系人时,会发生崩溃。
是否有其他人遇到此问题?
编辑:在我的情况下,我只显示电子邮件地址。选择没有电子邮件地址的联系人两次会导致崩溃。
答案 1 :(得分:1)
我遇到了同样的问题,虽然它似乎没有发生在内置的应用程序中(例如邮件)。
一个稍微麻烦的解决方法是将First和Last名称添加到显示的属性列表中 - 在这种情况下它不会显示“无电子邮件地址”图层,但也不会崩溃。
答案 2 :(得分:1)
我遇到了“CALayer position contains NaN:”的问题。该应用程序在iOS3.x和iOS4.1设备中运行良好,但在iOS4.2中崩溃。
就我而言,我有以下代码:
CGRect frame;
frame.size.height = kTableCellHeight - 11;
frame.size.width = widthCell - 30;
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:frame];
UILabel创建失败并显示错误。在我的例子中,它解决了为frame.origin添加任意值(对于这个UILabel的目的,没关系)
CGRect frame;
frame.size.height = kTableCellHeight - 11;
frame.size.width = widthCell - 30;
frame.origin.x = 0;
frame.origin.y = 0;
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:frame];
“CALayer位置包含NaN”的问题可能是因为使用了一些零,不完整或未定义的值或结构。
答案 3 :(得分:0)
我不知道。
我也看到了这一点 - 我正在做完全与你不同的事情 - 我正在使用route-me映射引擎来显示可滚动的地图。
我相信它与滚动视图有关 - 而且某个层以某种方式涉及滚动。正如你提到的一些观点我认为是滚动 - 这与我的观察结果一致。
我希望我能为您提供更多数据,但我可以告诉您的一件事是我已经为月开发了应用程序,并且一直在测试它在iPhone和iPad,设备和模拟器上,在操作系统3.2和4.0下 - 并且没有崩溃或内存泄漏[根本没有,或者与此相关]。
所以简而言之 - 不知道 - 但我认为你还可以!