Hay una gran diferencia.
@class MyViewController;
es una declaración hacia adelante para el objeto MyViewController
. Se usa cuando solo necesita decirle al compilador sobre un tipo de objeto pero no necesita incluir el archivo de encabezado.
Sin embargo, si usted necesita para crear un objeto de este tipo e invocar métodos en él, tendrá que:
#import "MyViewController.h"
Pero normalmente esto se hace en el archivo .m
.
Un uso adicional de declaraciones directas es cuando define un @protocol
en el mismo archivo de encabezado como un objeto que lo usa.
@protocol MyProtocolDelegate; //forward declaration
@interface MyObject {
id<MyProtocolDelegate> delegate;
...
}
...
@end
@protocol MyProtocolDelegate
... //protocol definition
@end
En el ejemplo anterior, el compilador necesita saber que el @protocol MyProtocolDelegate
es válida antes de que pueda compilar el objeto MyObject
.
Simplemente mover la definición de protocolo por encima de la definición MyObject
también funcionaría.
quizás esta pregunta similar puede ayudar: [http://stackoverflow.com/questions/322597/class-vs-import](http://stackoverflow.com/questions/322597/class-vs-import) –