Цель C, A Вопрос о типе возврата метода в протоколе - PullRequest
1 голос
/ 14 февраля 2011

У меня файл Type.h выглядит как

typedef enum MessageType{
    msgTypeOne,
    msgTypetwo,
            .
            .
            .   
}

И я определил протокол, а метод в протоколе пытается вернуть MessageType .. Похоже, это

#import <UIKit/UIKit.h>
#import "Type.h"

@protocol Message

- (int) getId;
- (MessageType) getType;
- (int) getSize;
- (NSData *) toBytes;
- (void) fromBytes:(NSData *)data;

@end

Затем я получаю сообщение об ошибке: «Перед протоколом здесь нельзя указывать тип или класс хранения»

Есть идеи? Как я могу это исправить?

Заранее спасибо ...

Ответы [ 2 ]

4 голосов
/ 14 февраля 2011

Вам нужно typedef перечислить до MessageType. В настоящее время вы typedef делаете enum MessageType ничем.

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

typedef enum {
    msgTypeOne,
    msgTypetwo,
    // ... 
} MessageType;

Это typedef анонимное перечисление для пользовательского типа MessageType. Ваш протокол должен теперь правильно скомпилироваться.

0 голосов
/ 14 февраля 2011

@ Чейонг Ли, вам нужно определить protocol в конце класса что-то вроде этого

#import <UIKit/UIKit.h>
interface something : NSObject
{
}

@end
@protocol some

@end

, и если вы используете этот протокол в интерфейсе, вам нужно сделать что-то вроде этого

#import <UIKit/UIKit.h>

@protocol some;

interface something : NSObject
{
}

@end
@protocol some

@end
...