Почему мой XIB изменяется каждый раз, когда я открываю его в IB? - PullRequest
43 голосов
/ 04 ноября 2011

Я нажимаю на 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>

Ответы [ 4 ]

22 голосов
/ 24 сентября 2012

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

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

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

6 голосов
/ 24 ноября 2012

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

Перейдите в Свойства документа Интерфейсного Разработчика в Инспекторе при выборе файла представления xib.Затем вам нужно

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

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

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

4 голосов
/ 13 декабря 2011

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

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

Как это происходит ...

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

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

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

0 голосов
/ 04 ноября 2011

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

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

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

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

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

Я перешел от Льва к Снежному Барсу, поэтому больше с этим не справляюсь.

...