Xcode4 повреждение файлов nib
У меня довольно странная проблема, которую я пока не могу полностью понять, и я хочу документировать ее здесь, потому что я не видел, чтобы эта проблема обсуждалась где-либо еще.
У меня есть приложение для iPhone, которое я разрабатывал под Xcode3. Это работало отлично, и я сделал несколько специальных рассылок, которые также отлично работали на устройствах.
Затем я обновился до Xcode4, и в следующий раз, когда я сделал специальное распространение, мое приложение упало при запуске. Само собой разумеется, что он работал в симуляторе и в устройствах, подключенных к моей машине разработки. Журналы сбоев были не слишком полезны, они указывали на сбои в main.m, в стандартном вызове UIApplication. Я, конечно, никогда не менял этот файл. После долгих копаний и осколков я обнаружил проблему.
XCode подумал, что тип моих файлов *.xib был text.xml вместо file.xib, и поэтому копировал эти файлы в комплект приложений, а не компилировал их. Затем приложение зависало при запуске, поскольку не могло найти файл MainWindow.nib.
Прослеживая мои проверки подрывной деятельности, я обнаружил, что типы файлов, записанные в файле project.pbxproj в xcodeproj, изменились при первой регистрации после обновления Xcode4. Я понятия не имею, как и почему это произошло. Также я не вижу через интерфейс, как я буду влиять на этот параметр, и я даже не открывал некоторые из изменений, которые были внесены в xib. (Чтобы исправить мою проблему, я изменил файл pbxproj в текстовом редакторе).
Итак, есть ли у кого-нибудь понимание того, как или почему это могло произойти?
2 ответа
Я сталкиваюсь с той же проблемой с моими существующими проектами xcode3, которые я перенес на xcode4.
Я попробовал решение @jaylinn, но я также обнаружил, что файл уже имел lastKnownReference.
Я смог решить эту проблему, удалив файлы.xib из проекта (Удалить только ссылку), а затем повторно добавив их в проект. Это немного больно, но это работает.
Надеюсь, это поможет. -Майк
Вот что исправило это для нас. XIB был идентифицирован как "explictFileType", который, по-видимому, не распознается в Xcode 4.
Ищите такую строку в файле вашего проекта (откройте в текстовом редакторе)...
C9B10BEA11D9084800F10866 / * Record.xib * / = {isa = PBXFileReference; licitFileType = file.xib; путь = запись.xib; sourceTree = ""; };
И изменить это на это...
C9B10BEA11D9084800F10866 / * Record.xib * / = {isa = PBXFileReference; lastKnownFileType = file.xib; путь = запись.xib; sourceTree = ""; };