Позиция CALayer содержит NaN: [nan -0.5] - PullRequest
6 голосов
/ 17 октября 2010

Я вижу этот журнал в консоли при запуске моего приложения:

CALayer position contains NaN: [nan -0.5]

Приложение состоит из UITaBar, первая вкладка которого - UINavigationControllerNavController я запускаю AddressBookPickerAddressBookPicker я выбираю только отображение телефонных номеров.

Когда я выбираю контакт, у которого есть только адреса электронной почты, именно тогда я вижу этот журнал.

Я неувидеть любые сбои или любые проблемы по этому вопросу, просто журнал напечатан на консоли.Хочу убедиться, что это не скрытая проблема, с которой я сталкиваюсь после запуска.

Ниже приведен фрагмент соответствующего кода и трассировки стека.Не уверен, какие другие части кода вставлять сюда, пожалуйста, дайте мне знать, если я могу опубликовать какую-либо статью, которая может помочь.

Любая помощь / комментарии приветствуются.

Спасибо!

Код

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];

NSArray *displayedItems = [NSArray arrayWithObjects: [NSNumber numberWithInt:kABPersonPhoneProperty]), nil];

picker.displayedProperties = displayedItems;

picker.peoplePickerDelegate = self;

[self presentModalViewController:picker animated:YES];

Stacktrace

#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

Ответы [ 4 ]

1 голос
/ 22 декабря 2010

У меня была такая же проблема с "CALayer position содержит 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 position with NaN" заключается в том, что некоторые nil,используется неполное или неопределенное значение или структура.

1 голос
/ 03 декабря 2010

Это, кажется, теперь вызывает сбои в iOS 4.2. Попробуйте выбрать контакт без номера телефона, вы должны перейти к просмотру, который говорит, что нет номеров телефонов. Сбой происходит, когда вы возвращаетесь ко всем контактам, а затем снова выбираете этот контакт.

Кто-нибудь еще испытывает эту проблему?

edit: в моем случае я отображаю только адреса электронной почты. Двойной выбор контакта без адреса электронной почты приводит к сбою.

1 голос
/ 08 декабря 2010

У меня такая же проблема, хотя, похоже, ее нет во встроенных приложениях (например, в почте).

Один слегка хакерский обходной путь - добавить имя и фамилию в список отображаемых свойств - в этом случае он не отображает слой «без адреса электронной почты», но также не падает.

0 голосов
/ 25 октября 2010
  1. Я не знаю.

  2. Я тоже это вижу - я что-то делаю полностью отличается от вас - я используюмеханизм отображения маршрута-me для отображения прокручиваемых карт.

Я считаю, это как-то связано с прокруткой видов - и каким-то образом слоемучаствует в прокрутке.Поскольку некоторые из упомянутых вами взглядов, я считаю, прокручиваются - это согласуется с моими наблюдениями.

Хотелось бы, чтобы у меня было больше данных для вас, но одна вещь, которую я могу сказать вам, - этоработали над приложением в течение месяцев и тестировали его на iPhone и iPad, устройствах и симуляторе, под операционными системами 3.2 и 4.0 - и не имели сбоев или утечек памяти [вообще или связанных с нимис этим].

Короче - без понятия - но я думаю, что ты в порядке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...