首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有一个简单易懂的指南( Cocoa,Xcode等的新手)给Interface Builder来讨论代理对象?

有没有一个简单易懂的指南( Cocoa,Xcode等的新手)给Interface Builder来讨论代理对象?
EN

Stack Overflow用户
提问于 2009-04-25 16:18:39
回答 3查看 8.3K关注 0票数 15

回到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。

任何建议的技巧/资源都将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-20 06:46:30

首先,占位符在这里是一个比代理更好的词。

通常,当您在NIB/XIB文件中有一个对象时,这意味着加载NIB文件将创建该实例。占位符对象是加载NIB文件时已经存在的对象,它们显示在NIB内,以便您可以在将通过加载NIB创建的对象和已经存在的对象之间建立连接。

文件的所有者、第一响应者和应用程序都是占位符。

文件的所有者是将加载nib的对象的占位符。所有的NIB加载方法都有一个'owner‘参数。当您与File的所有者建立连接时,当它在运行时建立时,它将连接到传入nib加载方法的所有者对象。许多UIKit和AppKit类都会为您调用nib加载方法。NSApplicationNSViewControllerNSWindowControllerUIApplicationUIViewController都代表您加载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:方法,并在它们处于焦点时响应此菜单项。

票数 44
EN

Stack Overflow用户

发布于 2009-04-25 17:01:11

除了"File's Owner“(它在加载nib/xib时挂起)之外,您在IB中创建的对象是真实对象,而不是代理对象。

您可能希望查看一些现有的示例代码,以了解IB是如何挂钩的。在您阅读过的文档/教程中,有没有让您感到困惑的地方?“有点迷失”很难做很多事情。

票数 1
EN

Stack Overflow用户

发布于 2009-07-07 17:13:31

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/789251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档