неожиданный '@' в программе (Xcode)

Внезапно 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 выдает мне эту ошибку? Это похоже на ошибку.


person olynoise    schedule 19.11.2011    source источник


Ответы (6)


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

person Aaron Douglas    schedule 22.03.2012
comment
Спасибо за размещение этого комментария; Я боролся с подобной проблемой в течение нескольких часов, и ваш комментарий решил мою проблему. Спасибо. - person 5lb Bass; 01.10.2012

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

person Skyler Saleh    schedule 19.11.2011
comment
У меня возникла эта проблема при попытке #import заголовка категории NSString в файле реализации Objective-C++ (.mm). Однако он работал нормально после того, как я переместил строку #import в соответствующий файл заголовка. Почему это так? - person arri; 15.03.2014

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

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

person Duncan Babbage    schedule 19.11.2011

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

 (eg. @"myString")

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

" (QUOTATION MARK) 
″ (DOUBLE PRIME) 
“ (LEFT DOUBLE QUOTATION MARK) 
” (RIGHT DOUBLE QUOTATION MARK)
person Slowburner    schedule 01.10.2012

Как бы то ни было, у меня была эта проблема, и обнаруженная оскорбительная строка не имела ничего общего с какими-либо строковыми литералами.

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

NSString *whatever = @"";

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

person mbm29414    schedule 13.03.2013

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

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

После того, как я удалил ошибочный «\», который съел последнюю цитату, это сработало.

person nishant    schedule 07.09.2017