Ошибка: ожидаемый список спецификаторов-спецификаторов до XXX - PullRequest
0 голосов
/ 15 сентября 2011

он делал это так много раз, и у меня не было никаких проблем с этим, но на этот раз я все еще получаю ошибку выше, мой соответствующий код такой:

#import "PiecesChoisies.h"

@interface SelectionMobilier : UIViewController {
IBOutlet PiecesChoisies *piecesChoisies;//Error: Expected specifier-qualifier-list before PiecesChoisies 
}
@end

Спасибо заранее за любые предложения:)

РЕДАКТИРОВАТЬ: Я пытаюсь это:

#import "PiecesChoisies.h"

    @interface SelectionMobilier : UIViewController {
    IBOutlet NSString *piecesChoisies;//Error: Expected specifier-qualifier-list before PiecesChoisies 
    }
    @end

Теперь я получил этот стек:

enter image description here

Ответы [ 3 ]

2 голосов
/ 15 сентября 2011

PiecesChoisies не распознается как тип.Это может произойти, потому что у него есть циклические зависимости.

Следующий пример кода иллюстрирует проблему.Классы A и B создают круговую зависимость, пытаясь импортировать друг друга.

#import "B.h"               // <-- A imports B
@interface A : NSObject
@end

#import "A.h"
@implementation A
@end


#import "A.h"              // <-- and B imports A
@interface B : NSObject
@end

#import "B.h"
@implementation B
@end

Поскольку классы никогда не создаются, компилятор обрабатывает их как неизвестные токены, поэтому ошибка отображается как Expected specifier-qualifier-list before XXX.Другими словами «я ожидал чего-то значимого до XXX».

Чтобы удалить циклическую зависимость:

  1. И добавьте прямое объявление класса (@class) в файл интерфейса.
  2. Переместите #import из интерфейса в файл реализации.

Объявление класса говорит компилятору "не волнуйтесь, я определю это позже", поэтому заголовок становится безопасным для импорта, поскольку конфликтующее определение теперь не видно в файле реализации.

Вот результат для предыдущего примера:

@class B;             // <---- #import "B.h" replaced with @class B
@interface A : NSObject
@end

#import "A.h"
#import "B.h"         // <---- #import "B.h" added
@implementation A
@end

И то же самое с классом B:

@class A;             // <---- #import "A.h" replaced with @class A
@interface B : NSObject
@end

#import "B.h"
#import "A.h"         // <---- #import "A.h" added
@implementation B
@end
0 голосов
/ 15 сентября 2011

Если это в заголовочном файле, используйте

@class PiecesChoisies;

вместо оператора импорта.Импортируйте файл .h в ваш файл .m.

0 голосов
/ 15 сентября 2011

Проблема будет находиться в PiecesChoisies.h. Изменения:

 IBOutlet PiecesChoisies *piecesChoisies;

до

 IBOutlet NSString *piecesChoisies;

, который подтвердит, что проблема находится в файле .h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...