2011-11-19 30 views
9

Tất cả các Xcode đột ngột đưa cho tôi một lỗi "không mong muốn" @ 'trong chương trình " ở đầu đối tượng của tôi @interface.bất ngờ '@' trong chương trình (XCode)

này đang xảy ra trong một loạt các đối tượng của tôi đã được làm việc trước ...

Dưới đây là một ví dụ (với các lỗi trong ý kiến)

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

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

Vậy tại sao được Xcode đem lại cho tôi lỗi này? Nó có vẻ như một lỗi.

Trả lời

5

Bạn đã bao gồm các tiêu đề từ một tập tin mà không được biên dịch như Objective C.

+0

Tôi gặp sự cố này khi cố gắng #import tiêu đề của một danh mục-Nategtring trong tệp thực thi Mục tiêu-C++ (.mm). Tuy nhiên, nó đã hoạt động tốt sau khi tôi di chuyển dòng #import đến tệp tiêu đề tương ứng. Tại sao vậy? – arri

5

Kiểm tra lỗi cú pháp trong file ONCOChordDiamond.h. Chúng có thể được đánh dấu cho bạn nếu bạn chạy Product> Analyze in Xcode.

Nhập tệp có lỗi cú pháp có thể dẫn đến trình biên dịch không thể phân tích cú pháp tệp hiện tại chính xác, ngay cả khi cú pháp của tệp hiện tại là chính xác.

12

Tôi nghi ngờ bạn vẫn gặp sự cố, nhưng nếu bạn kiểm tra tệp tiêu đề. Tôi đã dán mã từ web trong một lớp và dấu ngoặc kép không phải là tiêu chuẩn "". Các dấu hiệu được cách điệu với một dấu ngoặc kép mở và một báo giá đóng vì nó đến từ một trang web. Đánh dấu lại các dấu trích dẫn đã sửa nó.

+0

Cảm ơn bạn đã đăng nhận xét này; Tôi đã vật lộn với một vấn đề tương tự trong vài giờ và nhận xét của bạn đã giải quyết được vấn đề của tôi. Cảm ơn. –

0

Khi gặp phải vấn đề này với chữ NSString, Kiểm tra xem bạn đã sử dụng dấu ngoặc kép chưa, theo yêu cầu.

(eg. @"myString") 

Nếu bạn thấy NSStrings của bạn không đúng màu cú pháp, bạn có thể kiểm tra các ký tự vi phạm sau.

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

Đối với những gì đáng giá, tôi gặp sự cố này và dòng vi phạm đã được xác định là không có nơi nào gần bất kỳ chuỗi ký tự nào.

I đã làm lưu ý rằng một số dòng sau được tô màu một cách kỳ lạ (một lần nữa, không có chuỗi ký tự để đổ lỗi), vì vậy tôi đã thử nghiệm đặt một chuỗi ký tự không có thật trong mã ngay trước dòng vi phạm.

NSString *whatever = @""; 

Rõ ràng, nó thuyết phục các trình biên dịch mà dòng không hơi say lên, như vậy thì nó biên soạn chỉ tốt mà không phàn nàn. Sau khi xây dựng, tôi đã có thể xóa các biến chuỗi không có thật và tiếp tục với cuộc sống của tôi.

0

Tôi gặp sự cố tương tự và đó là vì báo giá cuối cùng bị thoát ra ngoài. Tôi đã sử dụng một chuỗi multiline với một chấm dứt "\" để ăn hết ký tự dòng.

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

Sau khi tôi xóa nhầm "\" đã trích dẫn báo giá cuối cùng hoạt động.