Почему мой 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>
Ответы
Ответ 1
Я закончил подачу этой проблемы Apple. Их ответ был непросветлен и говорил о возможных оптимизации, обновлении метаданных для новой версии Xcode и т.п.
Я отследил 100 версий от щелчка и по файлу. Как сказал Apple, это было "оптимизация" каждый раз, но каждый раз он просто перемещал некоторые XML-теги. Никогда не довольные своими оптимизациями, они перемещали их в следующий раз, когда они были открыты. Я считаю, что это ошибка с Xcode, раздражающая, но в основном безвредная.
Это происходило только со старыми XIB и либо перемещало содержимое в новый XIB файл, либо (что действительно произошло). Раскадровка избавилась от проблемы.
Ответ 2
Я не хотел использовать раскадровки, как было предложено в одном из других ответов.
Вот альтернативное простое/быстрое исправление.
Перейдите в Свойства документа построителя интерфейса инспектора при выборе файла представления xib.
Тогда вам нужно
- измените "Развертывание" на нечто иное, чем Project SDK, в моем случае я установил его в последнюю версию iOS (iOS 6 в настоящее время).
- измените разработку на нечто отличное от "предыдущей версии", в моем случае я установил ее в последнюю версию Xcode 4.5
Я запускаю Xcode 4.5.2 на Lion.
Надеюсь, что это поможет.
Ответ 3
основная идея...
XCode хранит множество номеров версий всех разных типов. Если вы посмотрите на XML-представление XIB, вы должны обнаружить, что подавляющее большинство этих небольших изменений находятся в этих номерах версий.
Как это происходит...
Всякий раз, когда вы делаете обновление Xcode, многое другое в Xcode (и часто внутри SDK) обновляется. Если вы внесете изменения в XIB файл, эти изменения в версии будут вставлены в XIB. Итак, если вам удастся открыть XIB файл, изменения в версии будут помещены в этот файл. Как только вы создадите или запустите приложение, эти изменения будут сохранены в файле.
Но я не обновляю Xcode через некоторое время!
Хорошо, всякий раз, когда вы делали последнее обновление, файлы XIB будут обновляться с новыми номерами версий, когда вы их открываете, по одному с течением времени.
Ответ 4
Изменить XCode 4 теперь лучше (возможно), если у вас возникло желание проголосовать за это, а затем спросите себя: "Перешел ли я с XCode 3 на XCode 4 с помощью Versioning?" Если нет, тогда вы понятия не имеете, что делаете, и, пожалуйста, не голосуйте по этому поводу. Если у вас есть, вы знаете, насколько вы плохо страдали, но да, этот вопрос иначе мертв. Если вы обнаружите, что открываете старый проект, просто заново создайте его и скопируйте файлы.
Я не знаю точного ответа, но я знаю, что эти вещи помогут вам найти его:
XCode 4 печально известен тем, что он завинчивается.
Если вы поместите свой каталог в систему Версии, (Git), затем возьмите GitBox и сохраните проект, чтобы дать ему состояние и создать репозиторий git. Репозиторий git сохранит состояние. Gitbox визуально покажет вам изменения.
После его открытия вы сможете щелкнуть правой кнопкой мыши по этому файлу в GitBox и нажать "увидеть разницу" или "просмотреть изменения" или еще что-то.
Вы будете автоматически прокручиваться по строкам. Если вы можете связать XML с Xib, вы можете выяснить, какие изменения.
Я отправился из Льва в Snow Leopard, поэтому больше не занимаюсь этим.