Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于Interface Builder,是否有一个简单易懂的指南(Cocoa、Xcode等的新内容)来讨论代理对象?_Xcode_Cocoa_Cocoa Touch_Interface Builder - Fatal编程技术网

对于Interface Builder,是否有一个简单易懂的指南(Cocoa、Xcode等的新内容)来讨论代理对象?

对于Interface Builder,是否有一个简单易懂的指南(Cocoa、Xcode等的新内容)来讨论代理对象?,xcode,cocoa,cocoa-touch,interface-builder,Xcode,Cocoa,Cocoa Touch,Interface Builder,回到C/C++时代,语言中真正让我头疼的部分是指针。当然,我现在明白了 现在,Interface Builder代理对象,或者更重要的是,如何使用Interface Builder以及在给定XIB的.XIB窗口(包含文件所有者、第一响应者等的窗口)中放置什么 我已经阅读了Xcode示例和web上的书籍和示例中的许多示例。他们对我很有帮助,但我还是觉得有点失落 我觉得理解IB对于理解如何编写Mac/iPhone/iPod touch应用程序非常重要 到目前为止,我已经使用了以下资源: Aaron

回到C/C++时代,语言中真正让我头疼的部分是指针。当然,我现在明白了

现在,Interface Builder代理对象,或者更重要的是,如何使用Interface Builder以及在给定XIB的.XIB窗口(包含文件所有者、第一响应者等的窗口)中放置什么

我已经阅读了Xcode示例和web上的书籍和示例中的许多示例。他们对我很有帮助,但我还是觉得有点失落

我觉得理解IB对于理解如何编写Mac/iPhone/iPod touch应用程序非常重要

到目前为止,我已经使用了以下资源: Aaron Hillegass针对Mac OS X的Cocoa编程 实用程序员资源: 在Xcode中变得高效(屏幕广播) 可可编程 Objective-C2.0中的编码(screncast) 编写第一个iPhone应用程序(屏幕广播) iphonesdk开发

我还浏览了苹果公司的Interface Builder用户指南PDF

任何建议的提示/资源将不胜感激

除了“文件的所有者”(在加载nib/xib时连接),您在IB中创建的对象是真实对象,而不是代理对象


您可能希望查看一些现有的示例代码,以了解IB是如何连接的。你读过的文档/教程中有什么让你困惑的地方吗?“有点迷失”很难做很多事。首先,占位符比代理更好

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

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

文件的所有者是将加载nib的对象的占位符。所有NIB加载方法都采用“owner”参数。当您与文件的所有者建立连接时,当它在运行时建立时,它将连接到传递给nib加载方法的所有者对象。许多UIKit和AppKit类为您调用nib加载方法
NSApplication
NSViewController
NSWindowController
UIApplication
、以及
UIViewController
都代表您加载NIB文件。当它们这样做时,它们将self作为所有者参数传递给nib加载方法。这就是为什么在使用视图控制器或窗口控制器时,将文件的所有者设置为子类,并利用视图和文件所有者之间的大部分连接

NSApplication
实例是
[NSApplication sharedApplication]
的一个简单占位符。这是一个全局单例,Interface Builder中的图标表示该全局单例。加载NIB文件不会创建第二个应用程序实例。相反,当一个NIB文件包含一个窗口时,如果您加载它十几次,您将有十几个窗口实例,但仍然有一个
NSApplication
实例


第一响应者是唯一的。将动作连接到第一响应程序意味着当动作被触发时,它应该被动态地发送到响应程序链。响应器链通常从聚焦视图开始,并在视图层次结构中向上延伸,包括一些控制器和代理。链中的每个对象都有机会处理该动作。菜单项与响应者链配合得很好。如果您有一个“Make Bold”菜单项,该菜单项应该使当前选择的文本加粗,那么您可以首先将其连接到一个
NSApplication
子类,但是您必须知道“Make Bold”应用的所有情况,以及如何处理它们。一个文本视图和一个可编辑的web视图可能需要不同的代码来处理“makebold”,而将这一切都封装在一个对象中会变得非常复杂,并且不具有很强的可扩展性。相反,您可以将“makeBold”菜单项的操作连接到第一响应程序上的
makeBold:
操作。这意味着当选择菜单项时,聚焦对象或响应
makeBold:
的其父对象之一将获得
makeBold:
消息。现在,许多类可以实现一个
makeBold:
方法,并在它们处于焦点时响应此菜单项。

这可能会有所帮助:

苹果有下面的文档解释文件的所有者,第一响应者应用程序在Interface Builder NIB/XIB文件中找到的占位符对象如下:


我意识到在你的问题中,你提到阅读苹果的Interface Builder文档,但我觉得在这里发布此文档以供将来参考是合适的。此外,自从您第一次提出问题以来,这些文档已经更新,因此从那时起,它们可能会使事情变得更清楚。

我所读到的所有内容都告诉我,文件的所有者、第一响应者和应用程序都是代理对象。其余的称为顶级对象。我提到的带有图标的窗口称为Nib文档窗口。正如我在问题中所说,我已经阅读了很多参考资料。我“有点”迷茫,因为我已经能够制作一些非常简单的单窗口应用程序。没什么特别的。我开始有问题,当它涉及到知道多少投入一个单一的锡伯。用户指南告诉你什么是一切,但不是最佳实践。而且,很明显,这里的帖子删除了一些格式。我有一段关于我看了哪些资源的文章,用几行隔开。很明显,这个网站不喜欢邮寄中的回车