如何将nib / xib转换为目标C代码?

时间:2009-12-25 05:30:32

标签: iphone objective-c interface-builder nib

我只是想知道有没有办法将nib / xib文件转换为ojbective C代码?我只是想找到nib / xib文件的等效代码(我试过nib2objc,看起来结果不是我想要的)。

其实我想编译这个例子

http://developer.apple.com/iphone/library/samplecode/TableSearch/index.html

没有nib / xib文件(我希望它与原始文件完全相同),是否有任何关于这样做的想法?

4 个答案:

答案 0 :(得分:13)

结帐nib2objc

  

nib2objc将NIB文件(或XIB文件)转换为Objective-C代码,包括每个实例的所有属性,记录的构造函数调用以及视图层次结构。

nib2objc yourfile.xib > code.m

答案 1 :(得分:7)

在一般情况下,我认为答案是否定的。笔尖不是代码;它们是序列化对象的档案。所以你要问的是,“给定一个任意序列化对象的图形,我可以生成一些可能在不使用序列化的情况下创建这样一个图形的源代码吗?”如果没有对所涉及的所有课程中的这种过程给予特别支持,我看不出你的能力。

询问你实际需要完成什么而不是这种做任何事情的具体方式可能更有益。

答案 2 :(得分:1)

对于所有'应该没有任何理由不使用nib / xib'类型的响应,让我提供一个具体的例子作为对应点。

[iPhone OS 3.1.3,3.2]

  1. iPhone OS应用程序的内存量有限。如果您使用太多,您的应用程序将自动由操作系统终止。
  2. 接口构建器使用[UIImage imageNamed ...]将nib / xib中引用的图像加载到缓存中,这会占用内存并且不会自动释放该内存。您也无法在该共享缓存中请求这些图像。
  3. 在带有多个nib / xib文件的应用程序中,在nib / xib文件(即背景)中布置一些大图像,你很快就会有一个快速吞噬内存的应用程序(每个完整大小的png背景为3mbs) iPad),你无法控制释放。对此有任何疑问,请查看[UIImage imageNamed]的文档并进行一些谷歌搜索以验证使用的是什么。
  4. 这是不使用xib / nib的情况。

答案 3 :(得分:0)

我认为如果你只是想为一个以编程方式创建的视图创建一个起点,那么这样做是有意义的,这种方式对Interface Builder来说不容易或不可能。如果要将视图层次结构捆绑到静态库中以使其完全自包含,这也很方便。理想情况下,如果可能的话,你想要使用笔尖。它将使国际化更容易。但是,您仍然可以使用字符串文件支持国际化。