неожиданное '@' в программе (XCode) - PullRequest
9 голосов
/ 20 ноября 2011

Внезапно Xcode выдает мне ошибку "неожиданный" @ "в программе" в начале моего объекта @interface.

Это происходит в куче моих объектов, которые ранее работали ...

Вот пример (с ошибками в комментариях)

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

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

Так почему же Xcode выдаёт мне эту ошибку? Это похоже на ошибку.

Ответы [ 6 ]

12 голосов
/ 22 марта 2012

Я сомневаюсь, что у вас все еще есть проблема, но если вы проверяете файл заголовка.Я вставил код из Интернета в класс, и кавычки не были стандартными "".Марки были стилизованы с вводной цитатой и закрывающей цитатой, потому что они пришли с веб-страницы.Повторный набор кавычек исправил это.

5 голосов
/ 20 ноября 2011

Проверка синтаксических ошибок в файле ONCOChordDiamond.h. Они могут быть выделены для вас, если вы запустите Product> Analyze в Xcode.

Импорт файла с ошибками синтаксиса может привести к тому, что компилятор не сможет правильно проанализировать текущий файл, даже если синтаксис текущего файла правильный.

5 голосов
/ 20 ноября 2011

Вы включаете заголовок из файла, который не скомпилирован как Цель C.

0 голосов
/ 08 сентября 2017

У меня была похожая проблема, и это было из-за того, что последняя цитата вырвалась наружу. Я использовал многострочную строку с завершающим символом «\», чтобы съесть символ конца строки.

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

После того, как я удалил ошибочное "\", которое съело последнюю сработавшую цитату.

0 голосов
/ 13 марта 2013

Как бы то ни было, у меня возникла эта проблема, и обнаруженная оскорбительная строка была рядом с строковыми литералами.

Я заметил , что некоторые из следующих строк были странно окрашены(опять же, не нужно винить строковые литералы), поэтому я протестировал помещение фиктивного строкового литерала в код непосредственно перед ошибочной строкой.

NSString *whatever = @"";

Очевидно, он убедил компилятор, что строка не была't облажался, так что потом скомпилировалось просто без жалоб.После этой сборки я смог удалить фиктивную строковую переменную и продолжить свою жизнь.

0 голосов
/ 01 октября 2012

При возникновении этой проблемы с литералами NSString, убедитесь, что вы использовали кавычки, как требуется.

 (eg. @"myString")

Если вы обнаружите, что строки NSStings неправильно синтаксически окрашены, вы можете проверить наличие следующих оскорбительных символов.

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