Переменная с неполной целью типа C - PullRequest
4 голосов
/ 13 марта 2012

Я пытаюсь сделать перечисление частью своей подписи метода, и я получаю эту ужасную ошибку в моем файле .h:

Declaration of 'enum CacheFile' will not be visible outside this function

У меня есть это в моем файле h:

 @interface DAO : NSObject

    typedef enum {
        DEFAULT_CACHE_FILE,
        WEB_CACHE_FILE
    } CacheFile;

    -(NSMutableArray *) parseFile :(enum CacheFile) file;



@end

Мой .m файл:

-(NSMutableArray *) parseFile:(CacheFile) file{
.....
....
}

И я получаю это предупреждение в моем файле m:

Conflicting Parameter types in implementation of 'parseFile:':'enum CacheFile' vs 'CacheFile'

Что я делаю не так?

Ответы [ 2 ]

12 голосов
/ 13 марта 2012

Переместите объявление enum за пределы @interface, обновите его до правильной идиомы enum Objective-C (отдельная typedef) и исправьте объявление метода:

enum {
   DEFAULT_CACHE_FILE,
   WEB_CACHE_FILE
};

typedef unsigned long CacheFile;

@interface DAO : NSObject    
   -(NSMutableArray *) parseFile:(CacheFile) file;
@end
4 голосов
/ 13 марта 2012

Определите это только так в вашем .h файле:

-(NSMutableArray *) parseFile :(CacheFile) file;

(больше не с enum.)

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