Quelle est la différence entre nib et xib dans les fichiers Interface Builder?
Depuis la version 3 d’Interface Builder, un nouveau format de fichier (avec l’extension .xib) a été ajouté, qui est fonctionnellement identique à .nib, sauf qu’il est stocké dans un fichier plat, ce qui le rend plus adapté par des outils tels que diff.
Les fichiers XIB sont des fichiers plats plutôt que des lots. Cela facilite la gestion des systèmes SCM (gestion du contrôle de source). Lorsque vous comstackz votre application, le fichier XIB est compilé dans un fichier NIB pour inclusion dans votre application.
La NIB compilée incluse dans le bundle d’application n’est plus modifiable dans Interface Builder et est beaucoup plus petite que le fichier XIB ou NIB hérité équivalent.
De même, lorsque vous comstackz votre projet, le fichier .xib sera compilé dans nib.
Le fichier XIB est essentiellement un document source d’un fichier NIB, les fichiers XIB peuvent presque toujours être modifiés dans Xcode (sauf s’ils sont obsolètes ou endommagés) . Les NIB les plus récents sont compressés et ne peuvent pas être ouverts. Les NIB plus anciens peuvent être visualisés par Xcode. Les NIB regroupés contiennent des fichiers source / archivés qui incluent designable.nib
qui est souvent le fichier XIB renommé.
NIB = N xt Iterface B uilder (NXT = NextStep = NS)
XIB = X ml I nterface B uilder
Bien que les nouveaux fichiers NIB archivés ne puissent être ouverts à la plupart des applications, y compris Xcode, ils peuvent toujours être désarchivés. J’ai trouvé cette application gratuite appelée NibUnlocker sur le site Web CharlesSoft qui peut potentiellement désassembler un fichier Nib plat et l’exporter en tant que document XIB . Cette application est encore assez buggée mais elle est parfois très précise en fonction du contenu du Nib .
(NibUnlocker est un nom très imprécis, les Nibs ne sont pas verrouillés, ils sont archivés)
Cliquez pour télécharger NibUnlocker
Si vous souhaitez en savoir un peu plus, vous pouvez lire des informations supplémentaires ci-dessous concernant les formats NIB et XIB :
Anatomie de Nxt Interface Builder:
Flat NIB s
Un fichier Flat NIB est un fichier compliqué à parsingr, mais ce n’est pas impossible. La structure de ces fichiers est simplement une liste de propriétés Apple binary (commençant par “bplist00”) et une partie de son contenu est archivée via NSKeyedArchiver. Etant donné qu’une NIB est formatée en tant que liste de propriétés, cela permet un petit hack: si vous modifiez réellement l’extension d’un Nib à plat en .plist, par exemple.
ArchivedNib.nib
toArchivedNib.plist
Vous pourrez réellement l’ouvrir dans Xcode en le visualisant comme une liste de propriétés bien que toutes les valeurs ne soient pas affichées car Xcode ne sait pas comment afficher certaines valeurs (valeurs CFKeyedArchiverUID). Lorsque vous visualisez un Nib en tant que liste de propriétés, vous obtiendrez probablement quelques propriétés de base telles que $ version, $ objects, $ archiver et $ top.Notes utiles
Un object CFKeyedArchiverUID est simplement un redirecteur, dans le {value = xx}, la valeur est un index pour un élément du tableau $ objects (depuis le début du tableau). par exemple.
, valeur = 29, le résultat serait le 29ème élément du tableau de l’object $ (n’oubliez pas que le tableau commence par 0). Dans Objective C, vous pouvez récupérer cette valeur depuis un CFKeyedArchiverUID avec cette méthode:
{value = 29}
+ (NSUInteger)valueForKeyedArchiverUID:(id)keyedArchiverUID { void *uid = (__bridge void*)keyedArchiverUID; NSUInteger *valuePtr = uid+16; return *valuePtr;}
(J’ai découvert cela moi-même en utilisant Internet et plus tard j’ai utilisé Hopper pour démonter NibUnlocker et j’ai remarqué dans son code source qu’il utilise la même technique en chargeant le NIB dans un NSDictionary et en parcourant toutes ses connexions, objects, etc. écrit un nouveau XIB )
comme si cela aidait 😉
Fonctionnellement rien, mais le xib est un format convivial de contrôle de source