iOS5 с использованием ARC: неявное преобразование int в NSDictionary - PullRequest
0 голосов
/ 06 февраля 2012

Я использую ARC для обновления моего старого проекта.У меня есть класс Filehelper, в котором я использую c-функции, например, для методов, которые мне нужны почти во всех проектах.(например, загрузить plist и т. д.)

ViewController

NSDictionary* dictionary = getDictionaryFromPlistWithName(@"TestFile", @"plist");

Filehelper.m

#pragma Returns content of plist as NSDictionary
NSDictionary* getDictionaryFromPlistWithName(NSString* fileName, NSString* pathExtension) {

    NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:pathExtension];

    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];

    if(fileExists){
        NSDictionary* dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
        return dictionary;
    }
    else{
        [NSException raise:@"File not found" format:@"path %@", path];
        return nil;
    }
}

Я получаю эту ошибку:

* ошибка: автоматический подсчет ссылок Проблема: неявное преобразование int в NSDictionary запрещено с ARC

Любые идеи, как это исправить, чтобы использовать его с iOS5?Я прочитал кое-что, что мне нужно использовать (__bridge NSDictionary *), но это не помогло.

PS.Каков ваш рабочий процесс для классов, которые вам уже нужны?Использовать тоже C-функции? = Как лучше?

1 Ответ

1 голос
/ 07 февраля 2012

Наиболее вероятная проблема в том, что вы забыли #include ваш заголовочный файл. Могу поспорить, что есть другие предупреждения, которые вы игнорируете, в частности, что-то вроде «неизвестная подпись для getDictionaryFromPlistWithName, при условии, что он возвращает int». Прочитайте ваши предупреждения и никогда не игнорируйте их (я настоятельно рекомендую -Werror для всех проектов ObjC).

...