В чем разница между nib и xib в файлах интерфейса Builder?
В чем разница между форматами файлов NIB и XIB Interface Builder?
Ответ 1
По версии Interface Builder версии 3 был добавлен новый формат файла (с расширением .xib), который функционально идентичен .nib, за исключением того, что он хранится в плоском файле, что делает его более подходящим для хранения в контроле версий систем и обработки с помощью таких инструментов, как diff.
Ответ 2
XIB - это плоские файлы, а не как набор. Это облегчает работу систем управления SCM (управление источниками). Когда вы компилируете свое приложение, XIB скомпилируется в файл NIB для включения в ваше приложение.
Скомпилированный NIB, который включен в комплект приложения, больше не доступен для редактирования в Interface Builder и намного меньше эквивалентного XIB или старого файла NIB.
Ответ 3
Также, когда вы компилируете свой проект, файл .xib будет скомпилирован в nib.
Ответ 4
Файл XIB в основном является исходным документом файла NIB, XIB может почти всегда редактироваться в Xcode (если только они не являются устаревшим или коррумпированным). в то время как более новые NIB с сжимаются и неприменимы, более старые NIB - это пакеты, которые можно просмотреть с помощью Xcode, The Bundled NIB s содержат некоторые исходные/архивные файлы, которые включают designable.nib
, который часто является просто переименованным файлом XIB.
NIB= N xt I nterface B uilder (NXT = NextStep = NS)
XIB= X ml I nterface B uilder
Хотя новые архивные файлы NIB недоступны для большинства приложений, включая Xcode, они все равно могут быть разблокированы. Я нашел это бесплатное приложение под названием NibUnlocker На CharlesSoft Веб-сайт, который может потенциально разобрать сжатый Nib и экспортирует его как документ XIB. Это приложение по-прежнему довольно ошибочно, но иногда оно очень точно на основе содержимого Nib.
(NibUnlocker - очень неточное имя, Nibs не заблокированы, они архивируются)
Нажмите, чтобы загрузить NibUnlocker
Если вы хотите узнать немного больше, вы можете прочитать дополнительную информацию, представленную ниже в отношении форматов NIB и XIB:
Nxt Interface Builder Анатомия:
Архивировано NIB s
A Сжатый файл NIB - это сложный файл для анализа, но это невозможно. Структура этих файлов основана на списке уплотненных свойств (начинается с "bplist00" ), а часть его содержимого архивируется через NSKeyedArchiver. Поскольку NIB отформатирован как список свойств, это позволяет сделать небольшой взлом: если вы действительно измените расширение Nib на .plist, например.
ArchivedNib.nib
доArchivedNib.plist
Фактически вы сможете открыть его в Xcode, рассматривая его как Список свойств. Когда вы просматриваете Nib как список свойств, вы, вероятно, получите несколько базовых свойств, таких как $version, $objects, $archiver и $top.Полезные примечания
A Объект CFKeyedArchiverUID на самом деле является перенаправителем, в {value = xx} значение представляет собой смещение для элемента в массиве $objects от начала массива. например.
<CFKeyedArchiverUID 0x60800002bc20 [0x7fffef6b8c30]>{value = 29}
, value = 29, результатом будет 29-й элемент в массиве $object. В Objective C вы можете получить это значение из NSArray с помощью этого метода:
+ (NSUInteger)valueForKeyedArchiverUID:(id)keyedArchiverUID {
void *uid = (__bridge void*)keyedArchiverUID;
NSUInteger *valuePtr = uid+16;
return *valuePtr;}
(я сам это понял, используя Интернет, а позже использовал Hopper, чтобы разобрать NibUnlocker, и я заметил в его исходном коде, он использует тот же метод, загружая NIB в NSDictionary и просматривая все его соединения, объекты и т.д. и выписывает новый XIB)
как если бы это помогло; -)
Ответ 5
Функционально ничего, кроме xib, является дружественным исходным кодом формата