2009-07-30 1 views
4

Если нет, и его необходимо включить в отдельный файл (например, MyEnums.h), мне нужно, чтобы #import MyEnums.h каждый раз, когда файлы .m или .h хотят ссылаться на тип или одно из значений ?Можно ли указать перечисление в том же файле, что и заголовок класса, который использует его в Objective-C?


Вот пример кода MyClass.h:

#import <Foundation/Foundation.h> 

// #1 placeholder 

@interface MyClass : NSObject { 
} 

// #2 placeholder 

- (void)sampleMethod:(MyEnum)useOfEnum; 

// #3 placeholder 

@end 

Вот перечисление Я пытаюсь определить:

typedef enum MyEnum { 
    Value1, 
    Value2 
} 

Если я пытаюсь размещая мое определение перечисления в # 1, Я получаю ошибку : здесь нет типа или класса хранения до «интерфейса».

Если я пытаюсь размещая мое определение перечислимого в # 2, я получаю об ошибке. Ожидаются идентификатором или «(» перед «конца»

Если я пытаюсь размещая мое определение перечислимого в # 3, я получаю error: expected ')' до 'MyEnum'. Который жалуется на параметр «useOfEnum», потому что его тип еще не определен.


Так что это можно сделать? Или что это лучший способ сделать это и ограничить количество необходимых символов?

ответ

5

Он должен работать в позиции # 1, но я думаю, что нужно писать так:

typedef enum { 
    Value1, 
    Value2 
} MyEnum; 

Для правильной работы.

обновление: Я подтвердил это (по крайней мере, в Xcode 3.2). Синтаксис, показанный выше, компилируется без ошибок.

+0

Он также будет работать в позиции 2 или где-либо еще до того, как на самом деле будет использоваться перечисление, но оно визуально более неудобно в любом месте, кроме положения 1. – Chuck

+0

@Chuck: Хорошая точка. Я даже не подумал проверить, будет ли это работать на позициях № 2 и № 3. Позиция №1 - это путь. –

+1

Спасибо за ответ, эта ссылка: http://stackoverflow.com/questions/707512/typedef-enum-in-objective-c/707572#707572 объясняет, почему вам нужно поместить его после брекетов. – Senseful

1

Похоже, вы просто отсутствуете; с конца декларации перечисления typedef.

 Смежные вопросы

  • Нет связанных вопросов^_^