2011-11-19 9 views
9

De repente Xcode me está dando un error "inesperado '@' en el programa" al comienzo de mi objeto @interface.inesperado '@' en el programa (XCode)

Esto está ocurriendo en un montón de mis objetos que anteriormente trabajaban ...

He aquí un ejemplo (con errores en los comentarios)

#import <UIKit/UIKit.h> 
#import "ONCOChordDiamond.h" 
@interface ONCOChordView : UIView //// unexpected '@' in program 
{ 
    NSMutableArray* chordDiamonds;  
    NSUInteger  diamondWidth, diamondHeight; 
} 

@end        /////unexpected '@' in program' 

¿Por qué es Xcode darme este error? Parece un error.

Respuesta

5

está incluyendo el encabezado de un archivo que no está compilado como C Objetivo

+0

Tuve este problema al intentar #importar el encabezado de un NSString-categorty en un archivo de implementación Objective-C++ (.mm). Funcionó bien, sin embargo, después de que moví la línea #import al archivo de encabezado correspondiente. ¿Por qué es eso? – arri

5

Compruebe si hay errores de sintaxis en el archivo ONCOChordDiamond.h. Es posible que se destaquen por usted si ejecuta Producto> Analizar en Xcode.

La importación de un archivo con errores de sintaxis puede hacer que el compilador no pueda analizar correctamente el archivo actual, incluso si la sintaxis del archivo actual es correcta.

12

Dudo que sigas teniendo el problema, pero si estás revisando el archivo de encabezado. Pegué el código de la web en una clase y las comillas no eran el estándar "". Las marcas se estilizaron con una cita de apertura y una cita de cierre porque venía de una página web. Retyping the quote marks lo arregló.

+0

Gracias por publicar este comentario; Luché con un problema similar durante varias horas y tu comentario resolvió mi problema. Gracias. –

0

Al encontrar este problema con los literales NSString, compruebe que ha utilizado comillas, según sea necesario.

(eg. @"myString") 

Si sus NSStrings no tienen una sintaxis correcta, puede verificar los siguientes caracteres infractores.

" (QUOTATION MARK) 
″ (DOUBLE PRIME) 
“ (LEFT DOUBLE QUOTATION MARK) 
” (RIGHT DOUBLE QUOTATION MARK) 
0

Por lo que vale, tuve este problema y la línea ofensiva que se identificó no estaba cerca de ningún literal de cadena.

me hicieron cuenta de que algunas de las siguientes líneas eran de color extraño (de nuevo, no hay cadenas literales tienen la culpa), así que probó poniendo una cadena literal falsa en el código justo antes de la línea en cuestión.

NSString *whatever = @""; 

Al parecer, convenció al compilador que la línea no era la pata, por lo que compila bien sin protestas. Después de esa compilación, pude eliminar la variable de cadena falsa y continuar con mi vida.

0

Tuve un problema similar y fue porque la última cita se estaba escapando. Estaba usando una cadena multilínea con una terminación "\" para comer el carácter de fin de línea.

[ string appendFormat:@"\n\ 
     vec4 position;\n\ 
     vec4 inputTextureCoordinate;\n\" ]; 

Después de eliminar el error "\" que consumió la última cita funcionó.