我刚刚购买了一台Mac,并开始使用Cocoa和Objective-C开始探索软件开发,使用Snow Leaped中的XCode来自强大的Microsoft和C#backgrund
我读过的所有文档和教程都使用Interface Builder和XCode来创建带有用户界面的应用程序。我目前的理解是Interface Builder创建的对象以某种方式在.xib文件中定义并在运行时创建。
捆绑包含随附的代码和资源。是不是说.xib文件实际上是一个包含UI资源的包,并且在运行时和对象实例中加载了这个包(是正确的动词?)?
如果abive是真的,有什么方法可以看到Interface Builder生成的代码和创建这些对象的代码点,至少没有看到这一点我觉得有很多“魔法”发生在我学习的这个阶段,这对我没有帮助。
我是否应该阅读C#/ WinForms和Objective-C / Mac OS / Cocoa之间明显的范式转换?
答案 0 :(得分:2)
要意识到的关键是在正常意义上没有任何代码......至少,nib / xib UI资源不仅仅是由Inteface Builder生成的Objective-c代码的简单控件。 这些是在笔尖中被“冻结”的对象,并且在应用程序需要时“解冻”(或者唤醒,我猜,就像awakeFromNib所建议的那样)。它们以xml / plist / etc形式存档,而不是用于生成objective-c源代码的框架。
考虑将它们序列化为xml或其他数据的对象。
答案 1 :(得分:2)
是不是说.xib文件实际上是一个包含UI资源的包,并且在运行时和对象实例中创建了这个包(是正确的动词?)?
没有。 A bundle是several specific directory structures之一,xib文件是常规文件,而不是目录。
xib文件包含对象的描述。编译nib时(通常作为构建应用程序的一部分),nib编译器读入xib,按照其中的描述创建对象,并将它们存档到nib中,该nib也不是bundle。
当您在应用程序中加载nib时,nib加载器会取消对象的对象,并确保所有出口连接在它的对象之间以及文件所有者之间的IB中。
不要担心实施细节。 Nibs Just Work。您所要做的就是: