4

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

其实我想编译这个例子

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

没有 nib/xib 文件(我希望它与原始文件完全相同),有什么想法吗?

4

4 回答 4

14

查看nib2objc

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

nib2objc yourfile.xib > code.m
于 2009-12-25T05:39:59.570 回答
7

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

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

于 2009-12-25T06:59:01.540 回答
1

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

[iPhone 操作系统 3.1.3、3.2]

  1. iPhone OS 应用程序的内存有限。如果您使用过多,您的应用程序会被操作系统自动终止。
  2. Interface builder 使用 [UIImage imageNamed...] 将 nib/xib 中引用的图像加载到缓存中,这会耗尽内存并且不会自动释放该内存。您也无法请求释放该共享缓存中的那些图像。
  3. 在具有多个 nib/xib 文件的应用程序中,在 nib/xib 文件(即背景)中布置一些大图像,您将很快拥有一个快速吞噬内存的应用程序(iPad 上每个全尺寸 png 背景 3mbs),你无法控制释放。对此有任何疑问,请查看 [UIImage imageNamed] 的文档并进行一些谷歌搜索以验证所使用的内容。

这是不使用 xib/nib 的情况。

于 2010-05-28T16:29:18.100 回答
0

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

于 2013-06-17T15:04:08.450 回答