Ответ 1
Обновление. Дальнейшие эксперименты показали флажок "Использовать автозапуск" для раскадровки. Если вы отключите его, то сохранение файла, похоже, устранило проблему. Я могу редактировать по желанию, без каких-либо сбоев.
Я новичок в Xcode, и у меня возникают проблемы с сбоем IDE при использовании Interface Builder. Это Xcode 4.5.
Он работал достаточно долго, чтобы я мог добавить дюжину или около того кнопок в раскадровку - но когда я пытаюсь изменить размер любого из них, он выходит из строя и завершает работу. Если я нажму кнопку, она сработает. Если я добавляю новый объект, например метку, он иногда сбой, но не всегда.
Если я не пытаюсь редактировать раскадровку, проект не будет создавать и запускать на симуляторе.
Я вставил, что похоже на соответствующую часть отчета о сбое ниже. Чтобы сэкономить место, я удалил все из раздела "иерархия представлений" вниз, но я могу добавить его, если он будет полезен. Все отчеты о сбоях относятся к той же ошибке.
Интересно, когда я смотрю на журнал Console, перед каждым из этих сбоев появляется еще один отчет от Interface Builder:
25/09/2012 10:46:35.661 Interface Builder Cocoa Touch Tool: CFPreferences:
user home directory at file://localhost/Users/me/Library/Application Support/
iPhone Simulator/User/ is unavailable. User domains will be volatile.
Правильно - этот каталог не существует. У меня есть iPhone Simulator/6.0, но больше ничего. Я зарегистрирован как пользователь в этом пути.
Основываясь на других предложениях по переполнению стека и в других местах, я пробовал очистить сборку, а затем удалил весь каталог iPhone Simulator и позволил симулятору воссоздать его, но это не имеет никакого значения.
В качестве эксперимента я только что создал новый проект и перетащил несколько кнопок и ярлыков в раскадровку. Это кажется прекрасным. Нет сбоев.
Означает ли это, что что-то испортилось в моем другом проекте?
Любые предложения были бы очень желанными. Это не важный проект - я изучаю свой путь на этом этапе, но если что-то вызывает проблемы, я хочу разобраться, прежде чем начать серьезную работу в Xcode.
Спасибо заранее.
Джеймс
Process: Xcode [650]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 4.5 (1839)
Build Info: IDEApplication-1839000000000000~3
App Item ID: 497799835
App External ID: 10747437
Code Type: X86-64 (Native)
Parent Process: launchd [129]
Date/Time: 2012-09-25 10:46:43.202 +0100
OS Version: Mac OS X 10.7.5 (11G56)
Report Version: 9
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Application Specific Information:
ProductBuildVersion: 4G182
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-1926/IBPlugin/Utilities/IBObjectMarshalling.m:651
Details: Failed to arbitrate IBNSLayoutConstraint, IBUIButton, IBUILabel, IBUIView, and IBUIViewController.
Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their content in your crash report.
Exception name: IBAssertionFailure
Exception reason: ASSERTION FAILURE:
Reason: All views needing candidate constraints have already had constraints generated. This most likely indicates a bug involving layout of the following views:
Layout engine frame ({{20, 60}, {282, 57}}) of <UILabel: 0xb36f590; frame = (20 60; 281 57); text = '0'; clipsToBounds = YES; opaque = NO; autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0xb36f620>> does not match canvas frame ({{20, 60}, {281, 57}})
Layout engine frame ({{236, 328}, {66, 43}}) of <UIRoundedRectButton: 0xb384590; frame = (236 328; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb384660>> does not match canvas frame ({{236, 328}, {65, 43}})
Layout engine frame ({{236, 124}, {66, 43}}) of <UIRoundedRectButton: 0xb38ea10; frame = (236 124; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb38eae0>> does not match canvas frame ({{236, 124}, {65, 43}})
Layout engine frame ({{236, 175}, {66, 43}}) of <UIRoundedRectButton: 0xb390a30; frame = (236 175; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb36e8e0>> does not match canvas frame ({{236, 175}, {65, 43}})
Layout engine frame ({{236, 226}, {66, 43}}) of <UIRoundedRectButton: 0xb392a90; frame = (236 226; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb392b60>> does not match canvas frame ({{236, 226}, {65, 43}})
Layout engine frame ({{236, 277}, {66, 43}}) of <UIRoundedRectButton: 0xb394b70; frame = (236 277; 65 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xb394c40>> does not match canvas frame ({{236, 277}, {65, 43}})
Обновление. Дальнейшие эксперименты показали флажок "Использовать автозапуск" для раскадровки. Если вы отключите его, то сохранение файла, похоже, устранило проблему. Я могу редактировать по желанию, без каких-либо сбоев.
Когда xib файлы находятся в разных форматах, но все они находятся в одном проекте, это произойдет. В моем случае некоторые xib файлы были совместимы для xcode5 dp, но другие были для xcode 4.6
Объект здесь - искать различия в xib файлах
Надеюсь, это поможет людям в будущем!
Эта проблема, вероятно, имеет какое-то отношение к двум разным размерам iPhone Retina (3,5 "и 4" ), и как это взаимодействует с режимом View: Scale To Fill и, возможно, Autosize Subviews, - оба из которых являются по умолчанию.
Например, в моем случае у меня был 4 "сетчатый размер MainView с плотно упакованными представлениями кнопок, но эмулятор был настроен на 3.5 отображения сетчатки. Поскольку мои представления кнопок были размером 43x43px и расположены рядом друг с другом, это приведет к тому, что позиции кнопок будут автоматически масштабироваться таким образом, чтобы они перекрывались, когда их позиции были скорректированы для 3,5-дюймового дисплея (Scale To Fill the less space) - поскольку они не могли уменьшаться по размеру. Такое перекрытие представлений, похоже, создает проблемы в системе автоматического макета. Следовательно, крушение, я думаю.
Это также, несомненно, будет причиной того, что есть некоторая ссылка на связь с эмулятором в отчете о сбое, хотя мы работаем только в интерфейсе Builder, который ранее не казался интуитивным.
Я тоже получил эту ошибку, для меня проблема была в TableView, у которого были некоторые ограничения. После удаления всех ограничений ошибка перестала отображаться.