2011-02-07 13 views

risposta

22

Il primo risponditore è specificamente this.

Quello che stai chiedendo, però, è l'obiettivo-azione. Hai un oggetto UI (pulsante, voce di menu) che devi far accadere più cose, ma l'oggetto UI invia solo un'azione.

Da qui la soluzione: fai in modo che l'azione faccia più cose.

Aggancia l'oggetto UI a un metodo di azione implementato nell'oggetto controller (nel tuo caso, il documento). In questo metodo, fai tutto ciò che il pulsante deve causare.

La soluzione di sottoclasse è fondamentalmente la stessa cosa, tranne che agganciare l'oggetto UI al documento, lo si collega al gestore di font, ma si rende anche il gestore di font un'istanza di una sottoclasse di NSFontManager che si creare, piuttosto che un'istanza di NSFontManager direttamente. Nella sottoclasse, si sostituisce addFontTrait: e si aggiunge l'altro comportamento all'implementazione. All'inizio o alla fine di tale metodo, si invia [super addFontTrait:sender] per richiamare l'implementazione di NSFontManager, quindi viene eseguita l'implementazione originale.

Paragrafo lungo, ma in realtà non è tutto molto altro lavoro: la differenza consiste nel creare la sottoclasse e rendere l'istanza un'istanza di tale sottoclasse.


Hai detto prima che "la documentazione Apple è incredibilmente vaga", ma in realtà non lo è. C'è solo un sacco di cose e forse non hai guardato i documenti giusti.

Questi sono i documenti necessari per leggere, dall'inizio alla fine, e in ordine:

EDIT: Questa lista è per Xcode 3. Ho pubblicato un (per Xcode 4) versione di questo elenco aggiornato in another answer.

  1. The Objective-C Programming Language
  2. The Memory Management Programming Guide for Cocoa
  3. The Cocoa Fundamentals Guide (il che spiega target-azione, tra le altre cose)
  4. Application Architecture Overview
  5. Resource Programming Guide
  6. Interface Builder User Guide
  7. I Xcode 3 guide:
    1. Xcode Project Management Guide
    2. Xcode Workspace Guide
    3. Xcode Build System Guide
    4. Xcode Debugging Guide
  8. Document-Based Applications Overview

C'è anche un Instruments User Guide, ma, purtroppo, che uno è vago - o, per essere più precisi, incompleto. Omette molte informazioni utili, ad esempio come utilizzare il modello Zombies di Instruments per eseguire il debug degli arresti anomali. È una panoramica di alto livello, niente di più.

Inoltre, segnalibro questi:

Questo è un sacco di letture, ma ti dirà tutto quello che devi sapere, e quell'ordine è all'incirca l'ordine in cui dovrai sapere.

+2

+1 ma mi piacerebbe dare di più . – Abizern

+0

Apprezzo la spiegazione Peter! Molto utile vedrò quello – Zakman411

+0

+ 1 per i collegamenti della documentazione e l'ordine di lettura suggerito. Finora ho trovato la documentazione di Apple molto buona, ma il volume puro è spesso travolgente. Questo è di grande aiuto. –

1

L'altra risposta dice che si hanno due opzioni:

Primo: Non sostituire l'azione da quello creato da voi e poi implementare la funzionalità della versione originale da soli. In questo caso, è sufficiente chiamare il metodo appropriato di NSFontManager. Cioè, tu aggiungi la funzionalità originale alla tua implementazione del metodo. In questo modo, entrambe le azioni vengono eseguite.

Secondo: sottoclasse la classe in cui è stata implementata la funzionalità originale e aggiungi la tua implementazione sovrascrivendo il metodo chiamato -addFontTrait. In questo modo, il tuo codice viene eseguito "a fianco". This question potrebbe aiutarti a trovare l'implementazione corretta.

Quindi, l'essenza è che è possibile aggiungere la funzionalità originale all'implementazione o viceversa. In questo caso, proverei il primo.