Rat*_*tan 58 cocoa interface-builder
Interface Builder文件中nib和xib有什么区别?
Del*_*ani 85
从Interface Builder版本3开始,添加了一个新的文件格式(扩展名为.xib),它在功能上与.nib相同,只是它存储在一个平面文件中,使其更适合存储在版本控制系统和处理中通过差异等工具.
http://en.wikipedia.org/wiki/Interface_Builder#Design
Luc*_*are 20
该XIB文件是一个basicly的源文件NIB文件,XIB S能几乎总是在Xcode编辑(除非它们已经过时或损坏).虽然较新的NIB是压缩的并且是不可打开的,但较旧的NIB是可以通过Xcode查看的捆绑包,捆绑的NIB包含一些源/归档文件,其中包括designable.nib
通常只是重命名的XIB文件.
NIB = Ñ XT 我覆盖整个院落乙 uilder(NXT = NextStep自动= NS)
XIB = X毫升我覆盖整个院落乙 uilder
虽然新的归档NIB文件对包括Xcode在内的大多数应用程序都无法打开,但它们仍然可能无法归档.我在CharlesSoft网站上找到了这个名为NibUnlocker的免费软件应用程序,它可以反汇编一个扁平的Nib文件并将其导出为XIB文档.这个应用程序仍然相当错误,但有时根据Nib的内容非常准确.
(NibUnlocker是一个非常不准确的名称,Nibs没有锁定它们被存档)
如果您想了解更多信息,可以阅读我在下面提供的有关NIB和XIB格式的一些其他信息:
Nxt Interface Builder解剖:
平NIB小号
Flat NIB文件是要分析的复杂文件,但这并非不可能.这些文件的结构只是一个苹果二进制属性列表(以"bplist00"开头),其中一些内容通过NSKeyedArchiver存档.由于NIB被格式化为属性列表,因此允许小的黑客:如果您实际上将扁平Nib的扩展名更改为.plist,例如.
ArchivedNib.nib
到ArchivedNib.plist
你居然能在Xcode中打开它看它作为一个财产清单虽然不是所有的值将显示,因为Xcode中不知道如何来显示一些值(CFKeyedArchiverUID值).当您将Nib视为属性列表时,您可能会获得一些基本属性,例如$ version,$ objects,$ archiver和$ top.有用的笔记
甲CFKeyedArchiverUID对象仅仅是一个重定向器,在{值= XX},该值是一个指数为在$ a项对象阵列(从阵列的开始).例如.
<CFKeyedArchiverUID 0x60800002bc20 [0x7fffef6b8c30]>{value = 29}
,value = 29,结果将是$ object数组中的第29项(Just Remember the array from 0).在Objective C中,您可以使用以下方法从CFKeyedArchiverUID中检索此值:
+ (NSUInteger)valueForKeyedArchiverUID:(id)keyedArchiverUID {
void *uid = (__bridge void*)keyedArchiverUID;
NSUInteger *valuePtr = uid+16;
return *valuePtr;}
Run Code Online (Sandbox Code Playgroud)
(我在使用互联网时发现了这一点,后来我使用Hopper来反汇编NibUnlocker,我在其源代码中注意到,它通过将NIB加载到NSDictionary并通过其所有连接,对象等来使用相同的技术.写出一个新的XIB)
如果这有帮助,哟打了我一个upvote ;-)
kar*_*agu 19
XIB是平面文件而不是捆绑包.这使得SCM(源代码管理)系统更容易处理.编译应用程序时,XIB将编译为NIB文件以包含在您的应用程序中.
应用程序包中包含的已编译NIB在Interface Builder中不再可编辑,并且比等效的XIB或旧版NIB文件小得多.
归档时间: |
|
查看次数: |
24742 次 |
最近记录: |