回到C/C++的时代,语言中真正让我着迷的部分是指针。当然,我现在明白了。
现在,接口生成器代理对象,或者更重要的是,如何使用接口生成器以及在.XIB窗口(包含文件的所有者、第一响应器等的窗口)中放入什么内容。对于给定的XIB。
我已经看过了相当多的书中的例子,以及在Xcodes例子和网络上找到的例子。他们对我很有帮助,但我还是觉得有点迷茫。
我觉得理解IB对于理解如何编写Mac/iPhone/iPod touch应用程序非常重要。
到目前为止,我已经浏览了以下资源: Aaron Hillegass的Cocoa Programming for Mac实用程序员资源:在Xcode中变得高效(屏幕广播) Cocoa编程在Objective-C2.0中编码(屏幕广播)编写您的第一个iPhone应用程序(屏幕广播) iPhone软件开发工具包开发
我还阅读了Apple的Interface Builder用户指南PDF。
任何建议的技巧/资源都将不胜感激!
发布于 2009-05-20 06:46:30
首先,占位符在这里是一个比代理更好的词。
通常,当您在NIB/XIB文件中有一个对象时,这意味着加载NIB文件将创建该实例。占位符对象是加载NIB文件时已经存在的对象,它们显示在NIB内,以便您可以在将通过加载NIB创建的对象和已经存在的对象之间建立连接。
文件的所有者、第一响应者和应用程序都是占位符。
文件的所有者是将加载nib的对象的占位符。所有的NIB加载方法都有一个'owner‘参数。当您与File的所有者建立连接时,当它在运行时建立时,它将连接到传入nib加载方法的所有者对象。许多UIKit和AppKit类都会为您调用nib加载方法。NSApplication
、NSViewController
、NSWindowController
、UIApplication
和UIViewController
都代表您加载NIB文件。当它们这样做时,它们将self作为owner参数传递给nib加载方法。这就是为什么当您使用视图控制器或窗口控制器时,需要将文件的所有者设置为您的子类,并在视图和文件的所有者之间建立大多数连接。
NSApplication
实例是[NSApplication sharedApplication]
的简单占位符。这是一个全局单例,Interface Builder中的图标表示该全局单例。加载NIB文件不会创建第二个NSApplication
实例。相比之下,当一个NIB文件包含一个窗口时,如果您加载它12次,您将有12个窗口实例,但仍然有一个NSApplication
实例。
第一个响应者是唯一的。将操作连接到第一个响应器意味着当操作被触发时,它应该动态地发送到响应器链。响应器链通常从焦点视图开始,并在视图层次结构中向上延伸,并包括一些控制器和代理。链中的每个对象都有处理操作的机会。菜单项与响应器链配合使用效果很好。如果您有一个"Make Bold“菜单项,该菜单项应该将当前选定的文本设置为粗体,则可以从将其连接到NSApplication
子类开始,但然后您必须了解"Make bold”适用的所有情况,以及如何处理它们。一个文本视图和一个可编辑的web视图可能需要不同的代码来处理“设置粗体”,并且将所有这些都封装在一个对象中会变得相当复杂,并且可扩展性不是很好。相反,您可以将"Make Bold“菜单项的操作连接到第一个响应器上的makeBold:
操作。这意味着当选择菜单项时,聚焦的对象或响应makeBold:
的父对象之一将收到makeBold:
消息。现在,许多类都可以实现makeBold:
方法,并在它们处于焦点时响应此菜单项。
发布于 2009-04-25 17:01:11
除了"File's Owner“(它在加载nib/xib时挂起)之外,您在IB中创建的对象是真实对象,而不是代理对象。
您可能希望查看一些现有的示例代码,以了解IB是如何挂钩的。在您阅读过的文档/教程中,有没有让您感到困惑的地方?“有点迷失”很难做很多事情。
发布于 2009-07-07 17:13:31
https://stackoverflow.com/questions/789251
复制相似问题