В чем разница между форматами файлов NIB и XIB Interface Builder? - PullRequest
56 голосов
/ 16 сентября 2010

В чем разница между nib и xib в файлах Interface Builder?

Ответы [ 5 ]

85 голосов
/ 16 сентября 2010

Начиная с версии Interface Builder 3, был добавлен новый формат файла (с расширением .xib), функционально идентичный .nib, за исключением того, что он хранится в плоском файле, что делает его более подходящим для храненияв системах контроля версий и обработки такими инструментами, как diff.

http://en.wikipedia.org/wiki/Interface_Builder#Design

19 голосов
/ 26 сентября 2011

XIB - это плоские файлы, а не пакет. Это облегчает работу систем SCM (управление исходным кодом). Когда вы компилируете свое приложение, XIB компилируется в файл NIB для включения в ваше приложение.

Скомпилированный NIB, входящий в комплект приложения, больше не доступен для редактирования в Интерфейсном Разработчике и намного меньше, чем эквивалентный XIB или устаревший файл NIB.

17 голосов
/ 08 октября 2015

Файл XIB в основном является исходным документом файла NIB , XIB s почти всегда можно редактировать в Xcode (если они не являются устарела или повреждена) . в то время как более новые NIB s сжимаются и не открываются, более старые NIB s являются пакетами, которые могут просматриваться Xcode, The Bundled NIB s содержат некоторый источник / архивные файлы, которые включают designable.nib, который часто просто переименовывается XIB File.


NIB = N xt I nterface B uilder (NXT = NextStep = NS)

XIB = X мл I nterface B uilder


Несмотря на то, что новые архивные файлы NIB недоступны для большинства приложений, включая XCode, они все еще потенциально могут быть разархивированы. Я нашел это бесплатное приложение под названием NibUnlocker на веб-сайте CharlesSoft , которое потенциально может разобрать плоский файл Nib и экспортировать его как XIB документ. Это приложение все еще довольно глючное, но иногда оно очень точное на основе содержимого Nib s.

(NibUnlocker - очень неточное имя, перья не заблокированы, они заархивированы)


Нажмите, чтобы загрузить NibUnlocker


Если вы хотите узнать немного больше, вы можете прочитать дополнительную информацию, которую я предоставил ниже относительно форматов NIB и XIB :

Анатомия Nxt Interface Builder:

Flat NIB s

Файл Flat NIB - сложный файл для анализа, но это не невозможно. Структура этих файлов - это просто список двоичных свойств яблока (начинается с «bplist00»), а некоторые из его содержимого архивируются через NSKeyedArchiver. Так как NIB отформатирован как список свойств, это позволяет небольшой взлом: если вы действительно измените расширение плоского Nib на .plist, например. ArchivedNib.nib до ArchivedNib.plist Вы действительно сможете открыть его в XCode, просматривая его в виде списка свойств, хотя не все значения будут отображаться, потому что XCode не знает, как отображать некоторые значения (значения CFKeyedArchiverUID). Когда вы просматриваете Nib в виде списка свойств, вы, вероятно, получите несколько базовых свойств, таких как $ version, $ objects, $ archiver и $ top.

Полезные заметки

A CFKeyedArchiverUID - это просто перенаправитель, в {value = xx} значением является index для элемента в массиве $ objects (с начала массив). например. <CFKeyedArchiverUID 0x60800002bc20 [0x7fffef6b8c30]>{value = 29}, значение = 29, результатом будет 29-й элемент в массиве $ object (просто помните, что массив начинается с 0). В Objective C вы можете получить это значение из CFKeyedArchiverUID с помощью этого метода:

+ (NSUInteger)valueForKeyedArchiverUID:(id)keyedArchiverUID {
  void *uid = (__bridge void*)keyedArchiverUID;
  NSUInteger *valuePtr = uid+16;
  return *valuePtr;}

(Я узнал об этом сам, используя Интернет, и позже я использовал Бункер для разборки NibUnlocker и я заметил, что в его исходном коде он использует ту же технику, загружая NIB в NSDictionary и прохождения всех его соединений, объектов и т. Д. И выписывает новый XIB )

ты ударил меня, если это помогло; -)

13 голосов
/ 16 сентября 2010

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

3 голосов
/ 16 сентября 2010

Функционально ничто, кроме xib - это дружественный формат управления исходным кодом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...