2013-05-28 10 views

risposta

26

Questa è una dichiarazione anticipata di un tipo objC:

@class MyClass; 

E questa è una dichiarazione anticipata di un protocollo ObjC:

@protocol AVAudioSessionDelegate; 

Per quelli di voi che sono curioso di sapere perchè questo è utile: le dichiarazioni a termine possono essere utilizzati per ridurre in modo significativo le dipendenze e significativamente ridurre i tempi di costruzione, perché consente di evitare #import intestazioni ing e/o interi quadri (che poi #import altri quadri). Quando non vengono utilizzate le dichiarazioni anticipate, molte intestazioni non necessarie sono visibili ad altre parti del programma: la modifica di un'intestazione può causare la ricompilazione di molti file e aumentano i tempi di compilazione e collegamento. Poiché i tipi di ObjC sono sempre trattati come puntatori (al nostro livello di astrazione), la dichiarazione anticipata è sufficiente nella maggior parte dei casi. Puoi quindi dichiarare i tuoi ivar nel tuo @implementation o continuazione di classe e il #import può quindi andare nel file *.m. Un altro motivo è evitare le dipendenze circolari.

+1

Questo in realtà non risponde come dovrei dichiarare in avanti gli oggetti @interface. Un esempio che usa quello che ho dato sarebbe utile. – aerlfredith

+1

scusami, la tua risposta ha risolto il mio problema, ma non ho capito completamente cosa intendevi. l'oggetto @interface è anche preceduto da @ class MyClass; Mi aspettavo qualcosa di più come @ interfaccia Myclass ;. Perdonami per quello. GRAZIE – aerlfredith

+0

@aerlfredith prego :) – justin

Problemi correlati