首页  > 计算机 >

xib和nib

本文按署名·非商业用途·保持一致授权
作者:  ,发表于2009年03月31日01时19分 

前段时间买了个iPod touch,于是尝试写一些小东西,基于cocoa和obj-c。cocoa平台我07年的时候接触过一下,写了一个叫woting的小软件,现在我还在用。今年再抓起xcode和Interface Builder的时候,发现多了一个叫xib的东西。当时用了一下,发现和nib没啥区别,也没去研究他们的区别。

前天,周日,因为下午要去吃3月3,晚上又去看AK47,起得晚,早上时间不多,也写不了什么东西,于是打算研究一下xib。文本打开一个xib一看,发现是个xml文件,再看里面的键,基本都是以object为主,于是明白了 ── 原来xib就是nib的xml描述。而nib则是一些对象(或者说类的实例)的序列化的二进制,可以方便存储在磁盘上。我知道看我blog的很多都是php程序员,nib的内容其实就是类似php里把对象serialize之后的东西。呃,当然xib也是对象的序列化,只不过它的格式是xml。我可没说php的serialize的结果是二进制,当然我也没说它不是,简单地说,就是我已经忘记了它是不是二进制内容了,不过根据我一丁点的记忆,它不是二进制内容。

简单地说,就是xib和nib都是一些对象的描述,而前者是xml格式,后者是一种二进制格式(鬼知道是什么格式)。二者的使用上没有什么区别,xcode/IB是两种格式都支持的。

xib比nib有个很明显的好处,就是xib可以很方便地进行diff操作。xib是文本文件,所以在版本控制方面比nib有优势。可能有人会说,反序列化的时候,xib肯定比nib慢很多吧。这个不需要担心的,因为在build的时候,xcode会把xib都转换为nib。最终用户使用的将会是nib内容,而不是xib。(这段内容是我阅读了apple文档之后所获得的知识,不是独立思考的结果)

ps:发现google code的default logo变了:

外面下雨了,今晚又晚睡了,不行不行,晚上是睡觉的最好时光,不应该错过太多的。



发表评论

  本站文章若无注明,则以署名·非商业用途·保持一致授权
  桂ICP备05004302号 感谢WordPress提供本程序 本模板下载