创建没有nib文件的App

本文介绍了一种在iOS应用开发中完全弃用Nib文件的方法,并详细解释了如何通过纯代码方式来构建用户界面,包括设置MainWindow及ViewController。

本文针对Cocoa Touch,Cocoa可能略有区别

首先说为什么不用Nib,其实也没什么太令人信服理由,大概就是以下几点吧

  • 代码重用比较方便
  • 用Interface Builder多多少少有丢三落四的毛病
  • 感觉自己写出来的代码更有存在感一些
  • 没事闲的

至于性能上是否有区别我还不太清楚,查了一会儿也没什么结果,如果各位对这方面有了解还请回复一下.

进入正题,以下几步搞定MainWindow

  • 删除Info.plist里面Main nib file base name这一条,或者把后面的MainWindow清空也行
  • main.m里有一句
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    改成:
    int retVal = UIApplicationMain(argc, argv, nil, @"YOUR_APPDELEGATE_CLASS");
    如:
    int retVal = UIApplicationMain(argc, argv, nil, @"TestAppDelegate");
  • XXXAppDelegate.m里面,删除原来的一些内容,添加类似如下代码,这里就不细说了,相信都能明白
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //一定要initWithFrame,否则不响应触摸事件
        _mainTabBarController = [[MainTabBarController alloc] init];
        _window.rootViewController = _mainTabBarController;
        [_window makeKeyAndVisible];
        
        return YES;
    }
MainWindow搞定了,其他ViewController就比较简单了,可以重写init,也可以在viewDidLoad等方法里添加一些控件.创建ViewController就直接alloc init就行,不用管frame的问题.
 
没有了nib是不是感觉整个项目清爽了一些呢?不过要写的代码也变多了.
 
<think> 我们正在讨论的是关于Nib文件的问题。根据引用[1]和[引用2],Nib文件是Interface Builder(IB)使用的文件格式,主要用于存储用户界面设计。在Xcode开发中,我们通常使用Interface Builder来设计界面,而Nib文件(或Storyboard)就是这些设计的保存格式。 用户的问题:后缀为nib文件是什么,能否打开? 回答: 1. **Nib文件是什么?** Nib文件是NeXT Interface Builder的缩写,是macOS和iOS开发中用于存储用户界面设计的文件格式。它包含了界面中的对象(如按钮、标签等)及其布局、属性以及对象之间的关系(如outlet和action)[^1][^2]。在Xcode中,我们通常使用xib(XML Interface Builder)或storyboard,但xib本质上就是nib的XML格式(nib是二进制格式)。 2. **能否打开?** 可以打开,但通常使用Xcode的Interface Builder来打开和编辑。另外,也可以使用一些文本编辑器打开(尤其是xib文件,因为它是XML格式),但二进制格式的nib文件用文本编辑器打开会看到乱码。 - **使用Xcode打开**:这是最常用的方式,直接双击nib文件(或xib文件)即可在Xcode中打开,并可视化编辑界面。 - **使用文本编辑器打开**:对于xib文件(本质上是XML),我们可以用任何文本编辑器打开查看和编辑(但推荐直接编辑,因为容易破坏结构)。而旧的二进制nib文件,虽然也可以用文本编辑器打开,但会看到大量乱码,因此推荐。 注意:从Xcode4开始,默认创建的是xib文件(文本格式),而nib文件通常是编译后的二进制格式。在构建应用时,Xcode会将xib或storyboard编译成nib文件(二进制格式),然后打包到应用中。 3. **如何查看nib文件的内容?** 如果我们有nib文件(二进制格式),我们可以使用`ibtool`命令行工具将其转换成可读的格式。例如: ```bash ibtool --generate-strings-file MyNib.strings MyNib.nib ``` 这个命令会从nib文件中提取本地化的字符串。另外,我们也可以将nib文件转换成xml格式: ```bash ibtool --convert MyNib.nib --write MyNib.xml ``` 这样生成的xml文件就可以用文本编辑器查看了。 4. **关于版本管理**(参考引用[2]): 在版本管理(如SVN或Git)中,由于nib文件(尤其是二进制的)很难进行diff,所以通常我们使用xib(文本格式)来替代。Xcode5之后,Storyboard也是以XML格式存储,因此版本管理中的比较变得可行[^2]。 总结: - Nib文件是Interface Builder使用的界面设计文件,分为二进制格式(传统nib)和XML格式(xib)。 - 可以打开,推荐使用Xcode进行可视化编辑。 - 二进制nib文件可以转换为文本格式查看。 §§相关问题§§ 1. Xib文件Nib文件有什么区别? 2. 如何在代码中加载Nib文件? 3. 如何将Nib文件转换成可读的文本格式? </think> ### 后缀为.nib文件解析 #### 1. **.nib文件的本质** .nib文件(Next Interface Builder)是苹果生态系统中的**用户界面设计文件**,主要用于存储应用程序的图形界面布局和控件配置[^1]。其核心特点包括: - **二进制格式**:采用紧凑的二进制存储结构(Xcode 5之前版本) - **界面描述容器**:包含窗口、按钮、文本框等UI元素的属性定义及关联关系 - **编译产物**:由Xcode在编译时自动生成(源文件为.xib) ```mermaid graph LR A[开发者设计界面] --> B[Xcode创建.xib文件] B --> C[编译时生成.nib] C --> D[打包到App Bundle] ``` #### 2. **能否打开.nib文件?** **.nib文件可直接打开**,但需特定工具: | 打开方式 | 适用场景 | 操作示例 | |----------------------|-----------------------------------|-----------------------------| | **Xcode可视化编辑** | 修改界面布局/控件属性 | 双击文件自动启动Xcode[^1] | | **文本编辑器查看** | 检查文件内容(非编辑) | `vim MyView.nib` | | **ibtool命令行解析** | 提取本地化字符串/转换格式 | `ibtool --generate-strings-file Localizable.strings MyView.nib` | #### 3. **版本管理注意事项** 由于.nib是二进制文件,在SVN/Git中需特殊处理[^2]: ```bash # 配置Git忽略差异 git config diff.nib.textconv ibtool --generate-strings-file ``` 建议优先使用.xib(XML格式)替代.nib,便于版本对比: $$ \text{开发效率} \propto \frac{1}{\text{二进制文件冲突概率}} $$ #### 4. **技术演进** - **Xcode 4+**:默认使用.xib(可读XML格式) - **Xcode 5+**:Storyboard逐步取代.xib/.nib[^2] - **SwiftUI**:声明式代码替代界面构建器文件 > **操作建议**:若收到.nib文件,直接拖入Xcode即可编辑。遇版本冲突时,可通过`ibtool`导出界面描述文本进行对比[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值