Файл 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 )
ты ударил меня, если это помогло; -)