Предупреждение компилятора при передаче NSError ** в качестве параметра метода - PullRequest
0 голосов
/ 07 апреля 2010

Последние 4 часа я ломал голову над этим, пробовал всевозможные маленькие эксперименты, но не могу понять, что происходит не так.Может ли это быть ошибкой компилятора?

Test.m:

- (id)initWithContentsOfURL:(NSURL *)aURL error:(NSError **)error
{
    if (!(self = [super init])) {
        return nil;
    }
    return self;
}

main.m:

NSError *error;

Test *t = [[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];

Вот предупреждение компилятора (из main.m):

предупреждение: несовместимые типы Objective C 'struct NSError **', ожидаемый 'struct NSDictionary **' при передаче аргумента 2 в initWithContentsOfURL: error: 'из отличного типа Objective-C

Я использую последние версии Xcode и Snow Leopard.

1 Ответ

5 голосов
/ 07 апреля 2010

Я подозреваю, что он выбирает другой экземпляр селектора, initWithContentsOfURL:error: - возможно, тот, что в NSAppleScript. Помните, что [NSObject alloc] возвращает id.

Ваш код работает должным образом во время выполнения?

Попробуйте привести значение [Test alloc] к Test*.

т.е.


Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...