|
|
1
17
我曾经强烈反对在自己的项目中使用Interface Builder。这是由许多因素造成的。我第一次使用Xcode工具是在iPhoneSDK回到beta版(大约2008年3月)时开始的,因为我不是MacCocoa背景,所以我对使用它有点不熟悉。这并不是我最初拒绝IB用于iPhone开发的主要原因,不过,在最初的iPhone SDK测试期间,iPhone开发的界面生成器确实很糟糕,使用起来很痛苦。 然而,与今天的iphonesdk相比,情况大不相同。虽然仍然存在一些恼人的IB bug,但我对使用Interface Builder的态度已经做了将近180次了。我发现,在项目中使用Interface Builder通常是个好主意。这是一个伟大的工具,现在,你应该利用它自己。 现在,不要误会我的意思——我仍然坚定地站在相信你应该能够实施的阵营中 任何东西 您可以在Interface Builder中单独使用代码,我认为能够这样做是非常宝贵的。不要把Interface Builder当作拐杖——最终只会伤害你自己(以及你的生产力或产品质量)。虽然IB的拖放细节对于您需要做的90%的事情来说是非常好的,但是当您有一些自定义的东西要实现,而这些东西只能在代码中完成时,您可能希望您遵循了这些建议,或者感谢您遵循了这些建议。幸运的是,我恨IB的时间足够长了,我自学了如何在代码中独立完成所有事情,然后将这些知识应用到IB中。
编辑:
|
|
|
2
8
使用构建器可以使您从原本需要维护的代码中解放出来,而且维护的代码越少越好。 IB构建的布局确实需要一些维护,但它是一个标准工具,有自己的文档和在线支持(论坛、列表等)。如果其他人需要跳入您的代码,您可以保证他们有IB方面的经验,但不一定是您特定的布局构建风格。 |
|
|
3
7
这取决于你的喜好。 我更喜欢用代码来写。
如果您有任何维护或重用它的意图,那么您认为在原型存在之后,用代码编写它是最容易的。 我的建议是:编写高度可重用和稳定的代码库,并将IB主要用于原型设计和一次性开发。 响应:
缺乏可靠的结构化所有权、标识和初始化。我不 希望 回复:吓人 Nib初始化是半顺序的。实际的顺序/过程可能会有所不同,这无法在可重用的内省程序中可靠地使用。。。同样,您最终会编写太多的代码,这些代码很脆弱,不可能重用,永远无法保证其行为是可预测的,并且必须始终验证状态(循环依赖的另一个条目)。如果它不是一次性的实现,为什么还要为复杂的问题操心呢? 这种编程方法是混乱的,实现必须(反过来)随时准备好处理任何事情。防止崩溃是一回事,但在这种情况下编写防御性的生产级代码。。。不可能。 编写一个一致的程序要容易得多,该程序的初始化决定了上下文中的有效性,然后实现就可以知道(如果初始化的话)对象通常已经准备好使用。将特殊情况的复杂性降至最低。随着程序复杂性的增加,许多这样的设计都会分崩离析,而库作者则会一层一层地添加“保护措施”,以保持设备运转——线程是此类海森堡的绝佳入口。在可重用的生产级代码中,不必要的歧义是不受欢迎的;人类不应该交叉引用一个程序的所有特例,与定义的行为和特例有关的复杂性只会传播或被忽略(假设它们被正确地跟踪和记录,这比从一开始就正确地编写要复杂得多)。我想我们都同意应该避免繁重的接口和实现。
我从未(明确地)说过它会慢一些:) 好吧,严肃地说,NIB取消归档(对我来说)是一个令人惊讶的缓慢过程,尽管我们对缓慢和取消归档时间的看法可能会有很大差异。
既然您已经有了明确的答案,我将提醒您,您已经拥有衡量性能所需的所有工具。 请记住,性能分析和增强非常重要 有学问的 . |
|
|
4
2
如果你有一个界面,它不会以一种以上的方式使用,有几个但不是很多的元素,并且不需要任何复杂的布局,那么IB是很棒的。
|
|
|
Danil · 种子/填充核心数据的最佳实践?[关闭] 1 年前 |
|
|
Robin · LazyVGrid项目预计不会击中测试区域 1 年前 |
|
|
Alex Smith · 移动到下一个视图控制器后如何显示警报? 1 年前 |
|
selcukctn · 如何在react native中制作无限动画? 1 年前 |
|
|
Nicolas Gimelli · iOS 18远程通信通知不起作用 1 年前 |