2011-02-07 10 views

Respuesta

22

First Responder es específicamente this.

Lo que está preguntando, sin embargo, es acción del objetivo. Tiene un objeto UI (botón, elemento de menú) que necesita para que ocurran varias cosas, pero el objeto UI solo envía una acción.

De ahí la solución: hacer que la acción haga varias cosas.

Enganche el objeto UI hasta un método de acción que implemente en su objeto controlador (en su caso, el documento). En ese método, haga todas las cosas que el botón necesita para causar.

La solución de subclases es básicamente la misma, excepto que en lugar de enganchar el objeto UI a su documento, lo conecta al administrador de fuentes, pero también hace que el administrador de fuentes sea una subclase de NSFontManager que usted crear, en lugar de una instancia de NSFontManager directamente. En su subclase, anula addFontTrait: y agrega el otro comportamiento en su implementación. Al principio o al final de ese método, envíe [super addFontTrait:sender] para invocar la implementación de NSFontManager, de modo que se realice la implementación original.

Párrafo largo, pero en realidad no es mucho más trabajo: la diferencia es simplemente hacer la subclase y hacer que la instancia sea una instancia de esa subclase.


Has dicho antes que "la Documentación de Apple es increíblemente vaga", pero en realidad no lo es. Simplemente sucede que es mucho, y tal vez no has estado mirando los documentos correctos.

Estos son los documentos que necesita para leer, de principio a fin, y en este orden:

EDIT: Esta lista es para Xcode 3. He publicado una (por Xcode 4) versión actualizada de esta lista en another answer.

  1. The Objective-C Programming Language
  2. The Memory Management Programming Guide for Cocoa
  3. The Cocoa Fundamentals Guide (lo que explica objetivo de acción, entre otras cosas)
  4. Application Architecture Overview
  5. Resource Programming Guide
  6. Interface Builder User Guide
  7. Los Xcode 3 guías:
    1. Xcode Project Management Guide
    2. Xcode Workspace Guide
    3. Xcode Build System Guide
    4. Xcode Debugging Guide
  8. Document-Based Applications Overview

También hay un Instruments User Guide, pero, por desgracia, que uno es vago o, para ser más precisos, incompleto. Omite mucha información útil, como cómo usar la plantilla de Instruments Zombies para depurar fallas. Es una descripción general de alto nivel, nada más.

Además, un marcador siguientes:

Eso es mucha lectura, pero le dirá todo lo que necesita saber, y ese orden es aproximadamente el orden en el que lo necesitará saber.

+2

+1 pero me gustaría dar más . – Abizern

+0

¡Agradezco la explicación, Peter! Muy útil, investigaré ese – Zakman411

+0

+ 1 para los enlaces de documentación y el orden de lectura sugerido. Hasta ahora, he encontrado que la documentación de Apple es muy buena, pero el volumen es a menudo abrumador. Esta es una gran ayuda. –

1

La otra respuesta dice que usted tiene dos opciones:

Primero: No sustituir la acción por el creado por usted y luego implementar la función de la versión original sí mismo. En este caso, basta con llamar al método apropiado de NSFontManager. Es decir, agrega la funcionalidad original a su propia implementación del método. De esta forma, ambas acciones se ejecutan.

Segundo: Subclase de la clase donde se implementa la funcionalidad original y agregue su implementación anulando el método que se llama -addFontTrait. De esta manera, su código se ejecuta "al costado". This question podría ayudarlo a encontrar la implementación correcta.

Por lo tanto, la esencia es que puede agregar la funcionalidad original a su implementación o al revés. En este caso, probaría el primero.