iPhone SDK: ошибка подтверждения в -[UILabel setFont:]
У меня есть приложение для iPhone, которое прекрасно компилируется и работает в симуляторе на моем ноутбуке. Теперь я пытаюсь собрать и запустить один и тот же код в симуляторе на iMac, и он запускается и позволяет мне нажимать кнопку, но затем я получаю ошибку подтверждения.
Вот что в консоли:
*** Assertion failure in -[UILabel setFont:], /SourceCache/UIKit/UIKit-738/UILabel.m:438
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: font != nil'
Stack: (
2493366603,
2432871995,
2493366059,
2459146836,
817183141,
817926218,
837317240,
837317032,
837315376,
837314643,
2492860866,
2492867620,
2492869880,
85304,
85501,
816175835,
816221412,
9096,
8930
)
Вот трассировка стека:
#0 0x949dbff4 in ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___
#1 0x9102ae3b in objc_exception_throw
#2 0x94962ad3 in CFRunLoopRunSpecific
#3 0x94962cf8 in CFRunLoopRunInMode
#4 0x00014d38 in GSEventRunModal
#5 0x00014dfd in GSEventRun
#6 0x30a5dadb in -[UIApplication _run]
#7 0x30a68ce4 in UIApplicationMain
#8 0x00002388 in main at main.m:16
Мой код не делает никаких прямых вызовов setFont:. Тем не менее, это будет момент выполнения программы, когда некоторые кнопки становятся видимыми впервые.
Я гуглил Некоторые люди с похожими проблемами говорят, что это волшебным образом исправлено, когда они редактируют NIB, или изменяют свой часовой пояс, или другие странности.
Есть идеи, какова реальная причина?
(Пожалуйста, не ныть о NDA.)
Обновление: если я изменил шрифт некоторых из моих кнопок с "TimesNewRomanPS-BoldMT" на "Times", то ошибка подтверждения больше не возникает. Но почему я не могу использовать нужный шрифт, который существует на iPhone, установлен на новом компьютере и доступен для выбора в Интерфейсном Разработчике?
5 ответов
Если у вас есть UILabels в вашем xib-файле, они могут быть каким-то образом повреждены, или вы можете установить для них шрифт, которого нет на обеих ваших машинах (вы можете использовать команду T при редактировании UILabel, чтобы вызвать Выбор шрифта; не уверен, что возможно установить шрифт не iPhone, но это может быть). В противном случае попробуйте удалить UILabels из вашего xib-файла до тех пор, пока он не запустится, и в этом ваш виновник.
И если это не UILabel, это может быть UIButton (который содержит UILable) и т. Д.
Была такая же проблема, но в особой ситуации. Только когда код был скомпилирован для iOS 4, но развернут на устройстве с 3.1.3 Удалено Arial-Narrow и все заработало.
Мы столкнулись с этой проблемой, потому что мы использовали [UIFont fontWithName:fontSize:]
с именем Helvatica Bold
(с пробелом) вместо Helvetica-Bold
(с чертой). Helvatica Bold
очевидно работает на текущих версиях ОС, но не на iOS 3.1. Helvetica-Bold
похоже правильная версия.