Resource Programming Guide 之 Nib Files (1)

  (注: 为了更好的理解有些名词就不翻译了,见谅~哈~)   

  在OSX 和 IOS 应用开发中Nib 文件扮演着非常重要的角色,在Xcode中用Nib文件代替代码,就可以灵活的创建并处理用户界面,因为在Nib中可以直接看到变化的结果,可以

 很快体验到不同的布局和配置的变化 。同样也可以不重写代码改变用户界面的很多方面。

     对于用AppKit 和 UIKit 框架 创建的应用,Nib文件具有重要的作用,这两种框架都支持用Nib文件布局窗口,视图,控制,同时事件处理代码又集成了这些布局项,Xcode在工作时,结合这些框架帮助你把用户界面中的事件处理和项目中的对象连接起来,这个功能极大减少了Nib文件加载之后必要的设置操作,同样也使代码和用户界面的关系更容易改变。

提示:

      尽管你可以不用Nib文件创建一个OC应用程序,这样做的情况是非常稀少的,我们也不推荐这么做。在应用程序为了达到Nib文件的效果,你可能需要替换大量的框架行为

Nib文件剖析

     一个Nib文件描述应用程序的可视元素,包括窗口(UIwindow),视图(UIView),控制(UIcontrol)等。它也能描述非可视的元素像管理你窗口和视图的对象。更重要的是,一个Nib文件能精确描述子Xcode

配置的对象,在运行时,在应用程序中,这些描述用来重新创建对象以及配置信息。当你在运行时加载一个Nib文件,在Xcode的文档中你会得到对象的额外复制品。nib加载代码

实例化对象,配置对象信息,重建一些nib文件内置的对象连接,接下来的部分将描述Nib文件是怎么用AppKit 和UIKit框架组织的,它们里面对象的类型,以及怎么更有效的使用这些对象。

关于界面对象

    界面对象是你增加到Nib文件中实现用户界面的对象。当Nib文件在运行时加载是,用户界面对象被nib加载代码实例化。大部分新的Nib 文件默认至少有一个界面对象,通常是窗口或菜单资源,你可以向Nib文件中增加更多的界面对象来作为你的界面设计,这是Nib文件中最常见的对象类型,也是通常为什么把创建Nib文件放在第一位,在将近的所有例子中你添加到Nib文件中的非可视的对象是管理可视对象的控制器对象,尽管在应用程序中可以创建这些对象,但是把它们加到Nib文件中配置它们会更方便些,当在Nib文件中,添加控制器,非可视对象,Xcode支持生成相应的对象,也支持生成管理Cocoa绑定的控制器对象。

关于File‘s Owner

    在Nib文件中最重要的对象之一就是File’s Owner 对象,不向界面对象,File‘s Owner 对象是占位对象,通常在Nib文件加载时不被创建,相反,你可以用代码创建,把它传递给Nib加载代码,这个对象重要的原因是它是应用程序和Nib文件内容的主要连接。更具体的说,是控制器对象对Nib文件的内容负责,在Xcode中你可以创建File's Owner 和Nib文件中的界面对象的联系。当你加载Nib文件,Nib加载代码会重建这些联系,用你指定的对象来替换。这就允许你的对象自动接收来自界面中引用对象的消息

关于 First Responder

    在Nib文件中,First Responder 对象也是占位对象,代表应用程序中的第一个对象,动态取决于响应链。因为应用的响应链不可能取决于在设计阶段。First Responder 在响应链中扮演着替身的角色,这些替身目标将会执行一些动作消息,菜单项通常把First Responder 占位对象作为目标,比如,最小的菜单项在应用中会隐藏最前面的窗口,不是具体的一个窗口,复制菜单项会复制当前的所选中的,而不止是单独的一个控制器或视图,其他对象也会定位自己的First Responder ,当你把Nib文件加载到内存中,你并不需要管理或替换First Responder 占位对象。AppKit 和UiKit 对象基于应用当前的配置自动设置和维护First Responder 占位对象,基于Appkit的应用,更多信息关于响应链 ,怎么调度事件,看 "Event Architecture: in Cocoa Event-Handling Guide. Iphone应用,更多信息关于响应链和动作处理,看 ”Event Handling Guide for IOS "

关于高级对象

    当你的程序加载Nib文件时,Cocoa 会重新创建你在Xcode中创建的对象图表,这个对象图表包括所有的窗口,视图,控制,单元格,菜单,自定义对象等在Nib中的对象

这个高级对象是这些没有父类对象的子集,高级对象通常只包括你加到Nib中的窗口,菜单条,自定义控制器对象等。(像File’s Owner ,First Responder ,Application 都是占位对象并不能视为高级对象。最典型的是,用File's Owner 的输出口(outlets)存储Nib文件高级对象的引用, 如果你不用这些输出口,从Nib加载的惯例中直接取出高级对象,你应该一直用一个指针指向这些对象,因为你创建使用它们以后,你就要对它们负责,负责释放它们的内存。更多信息关于Nib对象加载行为,看”Managing the Lifetimes of Objects

frome Nib Files"

关于图像和声音资源

     在Xcode 中你可以引用在你的Nib文件的内容中外部的图片和声音资源。一些控制和视图有能力展示图片、播放声音,而且这是它们默认配置,Xcode库提供对Xcode项目中的图片和声音资源的访问支持,因此你可以把Nib文件和这些资源链接起来。Nib文件并不直接存储这些资源文件,相反,它存储这些资源的名称以便Nib加载代码能够找到它们。当你加载包含图片和声音引用的Nib文件时,Nib加载代码会读取真实的图片和声音文件到内存中,并把它们存到缓存中。在OSX 中,图片和声音资源以名称存储在缓存中以便在需要的时候能够随后访问到。在IOS中,只有图片资源以名称存储在缓存中,因此访问图片,你可以用 NSImage 或 UIImage的imageNamed: 方法,这个取决于你的平台,在OSX中访问声音缓存,用NSSound 的soundNamed: 方法



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值