使用 xib 和通过代码添加的区别 - iPhone

Posted

技术标签:

【中文标题】使用 xib 和通过代码添加的区别 - iPhone【英文标题】:Difference between using xib and adding via code - iPhone 【发布时间】:2012-11-20 04:16:06 【问题描述】:

使用xib和通过代码添加页面元素有什么区别?

如果我使用的是 xib,内存是如何分配的?

【问题讨论】:

google.com/… 阅读! developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/… 我的问题是,例如,如果我们将视图拖放到 xib 中,那么它本身的内存是否已分配? @Dev 怎么分配?那个时候没有程序在运行……请逻辑思考一下…… 相关:***.com/questions/1816964/… 【参考方案1】:

使用xib和通过代码添加页面元素有什么区别?

我所知道的唯一真正的区别是使用代码非常棒,建议初学者使用,以便他们了解 UIKit 的工作原理。

如果我使用的是 xib,内存是如何分配的?

就像您手动创建对象一样,除了例如,执行 [[UIImageView alloc] init] 的不是您的视图控制器,而是 UIKit 中的默认工厂类(很可能是 NSCoder 的一些私有子类)。

【讨论】:

【参考方案2】:

使用 XIB 与使用代码创建/布局对象之间存在一个不明显的主要区别:Interface Builder 并不为每个接口类类型的每个属性提供设置 - 对于某些属性,您只需要使用代码即可。

有些事情在界面生成器中很难/繁琐甚至不可能做到,但在代码中却微不足道。至少在 ios3/4 时代,设置导航控制器以及在界面构建器中自定义其标题栏是一件非常痛苦的事情——我一直为此使用代码。

【讨论】:

【参考方案3】:

由于 XIB 仅由序列化对象组成,因此一旦分配了对象,使用 Interface Builder 或在代码中实现接口对象不会对内存使用产生影响。每种方法都有其优点和缺点。首先,您可能会发现通过在代码中创建界面对象可以更好地控制界面的行为和外观。而使用 Interface Builder 可以使布局对象的任务更容易,因为它的图形界面。

【讨论】:

以上是关于使用 xib 和通过代码添加的区别 - iPhone的主要内容,如果未能解决你的问题,请参考以下文章

适用于 ipad 和 iphone 的 MainWindow.xib

xib 和没有 xib 的区别

如何为 iPhone 5 显示器加载 xib

将 XIB 文件自动调整为屏幕大小

viewcontroller中appdelegate和delegate的区别

如何在之前为 iPhone 构建的应用程序中为 iPad 添加 .xib 文件?