Почему мой XIB изменяется каждый раз, когда я открываю его в IB?

Я нажимаю XIB через навигатор проекта. Он открывается и сразу меняет значок на серый, показывая, что у меня есть несохраненные изменения. Если я сохраню изменения, щелкните другой файл и снова щелкните его, чтобы снова открыть его, другие изменения. Всегда изменяется при открытии.

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

Примечание: использование Xcode 3.2 Build 4C199 со Snow Leopard

Изменить: я добавил пару разделов, которые были удалены из XML в одном из этих открытых / модификаций.

        <key>outlets</key>
        <dict>
            <key>addEventTabBarController</key>
            <string>UITabBarController</string>
            <key>window</key>
            <string>UIWindow</string>
        </dict>
        <key>superclass</key>
        <string>NSObject</string>

и

        <key>outlets</key>
        <dict>
            <key>courseTableCell</key>
            <string>UITableViewCell</string>
        </dict>
        <key>superclass</key>
        <string>UITableViewController</string>

person DBD    schedule 04.11.2011    source источник
comment
У меня есть один, который можно изменить, если вы откроете его, а затем отойдете от него.   -  person morningstar    schedule 04.11.2011


Ответы (4)


Я отправил эту проблему в Apple. Их ответ был непонятным, и в нем говорилось о возможных оптимизациях, обновлении метаданных для новой версии Xcode и тому подобном.

Я отследил 100 версий от щелчка мышью по файлу. Как сказала Apple, она каждый раз «оптимизировалась», но каждый раз просто перемещала какие-то XML-теги. Никогда не довольствуясь собственной оптимизацией, он перемещал их в следующий раз, когда они открывались. Я бы счел это ошибкой с Xcode, раздражающей, но в основном безвредной.

Это происходило только со старыми XIB, и либо перемещение содержимого в новый файл XIB, либо (что на самом деле произошло) раскадровки избавились от проблемы.

person DBD    schedule 24.09.2012
comment
Мне кажется, что если они хотят оптимизировать такие вещи, они должны использовать тот же подход, что и при оптимизации конфигурации сборки, и, по крайней мере, спросить пользователя, прежде чем вносить такие изменения ... - person David Hunt; 20.02.2013
comment
Даже это происходит в Xcode 6 и 7 .... Я думаю, Apple, создатель Xcode, это никогда не исправит! Стыд! - person Anoop Vaidya; 30.05.2016

Я не хотел использовать раскадровки, как предлагалось в одном из других ответов. Вот альтернативное простое / быстрое решение.

Перейдите к свойствам документа Interface Builder в инспекторе при выборе файла представления xib. Тогда вам нужно

  • измените «Развертывание» на что-то отличное от Project SDK, в моем случае я установил последнюю версию iOS (в настоящее время iOS 6).
  • изменить разработку на что-то отличное от «предыдущей версии», в моем случае я установил последнюю версию Xcode 4.5

Я запускаю Xcode 4.5.2 на Lion.

Надеюсь это поможет.

person Diego    schedule 23.11.2012
comment
Это здорово, выручили меня! - person Dustin Kendall; 07.05.2013

Основная идея...

XCode хранит множество номеров версий самых разных вещей. Если вы посмотрите на XML-представление XIB, вы обнаружите, что подавляющее большинство этих небольших изменений связано с этими номерами версий.

Как это бывает ...

Всякий раз, когда вы обновляете Xcode, обновляется много разных вещей в Xcode (и часто внутри SDK). Если вы вносите изменения в файл XIB, эти изменения версии сохраняются в XIB. Итак, если вам случится открыть файл XIB, изменения версии будут помещены в этот файл. Как только вы создадите или запустите приложение, все изменения сохранятся в файле.

Но я давно не обновлял Xcode!

Что ж, всякий раз, когда вы делали свое последнее обновление, файлы XIB будут обновляться с новыми номерами версий по мере их открытия, один за другим с течением времени.

person Jeff Wolski    schedule 13.12.2011
comment
Хотя я не сомневаюсь, что XCode может реструктурировать и изменять файлы между версиями, это не то, что здесь происходит. Я могу открывать / изменять и сохранять изменения 50 раз в течение 5 минут, если я просто продолжаю открывать файл и сохранять изменения. Я также взглянул на модификации, и они, похоже, сосредоточены вокруг розеток и других разделов, которые, казалось бы, могут привести к поломке файла ... но он все еще работает, поэтому показывает, как мало я знаю о том, как xml внутри XIB файл работает. - person DBD; 14.12.2011

Изменить. XCode 4 теперь лучше (возможно), если вы хотите проголосовать против этого, спросите себя: «А я перешел с XCode 3 на XCode 4 с помощью управления версиями?» Если нет, то вы понятия не имеете, что делаете, и, пожалуйста, не голосуйте по этому поводу. Если да, то вы знаете, как сильно вы пострадали, но да, в остальном этот вопрос мертв. Если вы обнаружите, что открываете устаревший проект, просто воссоздайте его и скопируйте файлы.

Я не знаю точного ответа, но знаю, что эти вещи помогут вам его найти:

XCode 4 печально известен тем, что лажает. Если вы поместите свой каталог в систему управления версиями (Git), затем возьмите GitBox и сохраните свой проект, чтобы придать ему состояние и создать на его основе репозиторий git. Репозиторий git сохранит состояние. Gitbox визуально покажет вам изменения.

После его открытия вы сможете щелкнуть правой кнопкой мыши по этому файлу в GitBox и нажать «увидеть разницу» или «просмотреть изменения» или еще что-то.

Вы будете автоматически прокручены до строк. Если вы можете связать XML с Xib, вы сможете выяснить, что изменится.

Я перешел от Lion к Snow Leopard, поэтому больше этим не занимаюсь.

person Stephen J    schedule 04.11.2011
comment
Я использую контроль версий, посмотрел на изменения. Иногда я клянусь, что это просто перемещение XML по файлу. В других случаях он вносит фактические изменения, которые выглядят так, как будто они повлияют на мои различные компоненты ... но не оказывают заметного влияния, когда я запускаю свой код. Я не удивлюсь, если он просто продолжит переключаться между 4 разными изменениями. - person DBD; 04.11.2011
comment
Вы говорите, что переход от Lion обратно к SL исправляет эту аномалию? Различия в версии Xcode или в ОС? Возможно, сработает версия Lion? - person Chris Wagner; 15.12.2011
comment
Я никогда не переходил на Lion, я все время использую Snow Leopard и, очевидно, у меня есть эта проблема. :) - person DBD; 16.12.2011