Care este diferența dintre formatele de fișiere NIB și XIB Interface Builder? (Programare, Cacao, Constructor De Interfețe)

Ratan a intrebat.

Care este diferența dintre nib și xib în fișierele Interface Builder?

Comentarii

  • Possible duplicate of Ce se întâmplă cu .NIB -> .XIB? –  > Por Suhaib.
  • Vă întrebați când a fost introdus xib? Am fost și eu! Probabil între octombrie 2007 și iulie 2008, deoarece a fost introdus între XCode 3.1. sursa pentru versiunea XCode, sursa pentru data versiunii XCode –  > Por Ben Butterworth.
5 răspunsuri
Delan Azabani

Începând cu versiunea 3 a Interface Builder, a fost adăugat un nou format de fișier (cu extensia .xib), care este identic din punct de vedere funcțional cu .nib, cu excepția faptului că este stocat într-un fișier plat, ceea ce îl face mai potrivit pentru stocarea în sistemele de control al revizuirilor și procesarea cu instrumente precum diff.

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

Comentarii

  • Nicio problemă; ne bucurăm să vă ajutăm. 🙂 –  > Por Delan Azabani.
  • xib înseamnă xml interface builder –  > Por GameLoading.
YeaTheMans

The XIB File este în principiu un document sursă al unui NIB File, XIBs pot fi aproape întotdeauna editate în Xcode (cu excepția cazului în care nu sunt depășite sau corupte). în timp ce cele mai noi NIBs sunt comprimate și nu pot fi deschise, Cele mai vechi NIBs sunt pachete care pot fi vizualizate de Xcode. NIBs conțin unele fișiere sursă/arhivate care includ designable.nib care este adesea doar un fișier redenumit XIB File.


NIB = Nxt Interfață Builder (NXT = NextStep = NS)

XIB = Xml Interfață Builder


Cu toate că noul arhivat NIB nu pot fi deschise de majoritatea aplicațiilor, inclusiv de Xcode, ele pot fi încă dezarhivate. Am găsit această aplicație freeware numită NibUnlocker pe site-ul CharlesSoft care poate dezasambla un fișier flat Nib și să-l exporte ca un fișier XIB document. Această aplicație este încă destul de eronată, dar este uneori foarte precisă, pe baza Nibs contents.

(NibUnlocker este un nume foarte inexact, Nib-urile nu sunt blocate, ci arhivate).


Faceți clic pentru a descărca NibUnlocker


Dacă doriți să știți un pic mai multe puteți citi câteva informații suplimentare pe care le-am furnizat mai jos în ceea ce privește NIB și XIB Formate:

Anatomia Nxt Interface Builder:

Plat NIBs

Un fișier NIB plat este un fișier complicat de analizat, dar nu este imposibil. Structura acestor fișiere este doar o listă de proprietăți binare apple (începe cu „bplist00”), iar o parte din conținutul său este arhivat prin NSKeyedArchiver. Deoarece un NIB este formatat ca o listă de proprietăți, acest lucru permite un mic hack: dacă schimbați efectiv extensia unui fișier flat Nib în .plist, de exemplu. ArchivedNib.nib în ArchivedNib.plist îl veți putea deschide în Xcode, vizualizându-l ca o listă de proprietăți, deși nu toate valorile vor fi afișate, deoarece Xcode nu știe cum să afișeze unele valori (valorile CFKeyedArchiverUID). Atunci când vizualizați un Nib ca o listă de proprietăți, veți obține probabil câteva proprietăți de bază, cum ar fi $version, $objects, $archiver și $top.

Note utile

A CFKeyedArchiverUID este pur și simplu un redirector, în cazul {value = xx}, valoarea este un fișier index pentru un element din matricea $objects (de la începutul matricei). de exemplu. <CFKeyedArchiverUID 0x60800002bc20 [0x7fffef6b8c30]>{value = 29}, value = 29, rezultatul ar fi al 29-lea element din matricea $object’s (nu uitați că matricea începe cu 0). În Objective C, puteți prelua această valoare dintr-un CFKeyedArchiverUID cu această metodă:

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

(Am aflat acest lucru singur folosind internetul și mai târziu am folosit Hopper pentru a dezasambla NibUnlocker și am observat că în codul său sursă, acesta folosește aceeași tehnică prin încărcarea NIB într-un fișier NSDictionary și trece prin toate conexiunile, obiectele etc. și scrie un nou fișier XIB)

yo dați-mi un upvote dacă v-a ajutat 😉

karthikPrabhu Alagu

XIB-urile sunt fișiere plate mai degrabă decât să fie un pachet. Acest lucru îl face mai ușor de gestionat pentru sistemele SCM (source control management). Când vă compilați aplicația, XIB este compilat într-un fișier NIB pentru a fi inclus în aplicație.

NIB-ul compilat care este inclus în pachetul de aplicații nu mai poate fi editat în Interface Builder și este mult mai mic decât fișierul XIB echivalent sau NIB tradițional.

Vojto

De asemenea, atunci când vă compilați proiectul, fișierul .xib va fi compilat în nib.

Kevin

Din punct de vedere funcțional, nimic, dar xib este un format prietenos pentru controlul sursei