2011-02-07 43 views
5

我问一个问题刚才这里就使用急救员的 - 并且得到了响应的位置:急救员说明所需

Trouble with First Responder

有人会介意给我一个“假人”版本的呢?作为Cocoa的新手,我真的不知道从哪一种方法开始。我要奖励答案很快

扎克

回答

22

第一响应者是特别this

你问什么,不过,是目标的行动。你有一个UI对象(按钮,菜单项),你需要引起多种事情发生,但UI对象只发送一个动作。

因此,解决办法:该行动做多件事情。

挂钩的UI对象最多的操作方法在您的控制器对象实现(在你的情况下,该文件)。在该方法中,执行按钮所需的所有操作。

子类化解决方案基本上是相同的东西,除了将UI对象连接到文档之外,您将它连接到字体管理器,但是您也使字体管理器成为NSFontManager的子类的一个实例,直接创建,而不是NSFontManager的实例。在您的子类中,您可以覆盖addFontTrait:并在您的实现中添加其他行为。在该方法的开始或结束时,您发送[super addFontTrait:sender]来调用NSFontManager的实现,以便原始实现完成。

长款,但实际上并不是所有的东西,更多的工作:不同的只是使子类,并使得实例子类的实例。


你说过,“苹果文档是非常模糊的”,但它真的不是。碰巧有很多,也许你没有看到正确的文档。

这些都是你需要阅读的文件,从开始到结束,并依次是:

编辑:该列表的Xcode 3.我在发布这个列表的更新(对的Xcode 4)版本another answer

  1. The Objective-C Programming Language
  2. The Memory Management Programming Guide for Cocoa
  3. The Cocoa Fundamentals Guide(这也解释了目标 - 动作,除其他事项外)
  4. Application Architecture Overview
  5. Resource Programming Guide
  6. Interface Builder User Guide
  7. Xcode的3指南:
    1. Xcode Project Management Guide
    2. Xcode Workspace Guide
    3. Xcode Build System Guide
    4. Xcode Debugging Guide
  8. Document-Based Applications Overview

还有一个Instruments User Guide,但不幸的是,一个含糊不清 - 或者更确切地说,是不完整的。它省略了很多有用的信息,比如如何使用Instruments的僵尸模板来调试崩溃。这是一个高层次的概述,仅此而已。

此外,书签这些:

这是一个很大的阅读,但它会告诉你你需要知道的一切,而为了大致是你需要知道它的顺序。

+2

+1,但我很乐意给更多。 – Abizern 2011-02-07 15:30:52

1

对方回答说,你有两个选择:

第一:不要更换由您创建的一个动作,然后实施自己的原始版本的功能。在这种情况下,只需调用NSFontManager的适当方法即可。也就是说,您将原始功能添加到您自己的方法实现中。这样,两个动作都被执行。

第二:子类实现原始功能的类,并通过覆盖名为-addFontTrait的方法来添加您的实现。通过这种方式,您的代码将“并行”执行。 This question可能会帮助您找到正确的实施。

所以,本质是,你可以在原有的功能添加到您的实现或周围的其他方法。在这种情况下,我会尝试第一个。