Я думаю, вы имели в виду ссылку на этот файл .В строке 52 мы находим следующее:
Definition * def = [[Definition alloc]init:dict];
Компилятор не может определить, ссылается ли метод init:
на (Word *)init:
из класса Word или (Definition *)init:
из класса Definition.Он неправильно полагает, что это метод из класса Word, и поэтому предупреждает вас, что вы инициализируете переменную Definition * с объектом Word *.
Это разрешимо с помощью приведения типа, подобного этому:
Definition * def = [((Definition *)[Definition alloc]) init:dict];
Или даже:
Definition * def = (Definition *) [[Definition alloc]init:dict];
И нет, компилятор не настолько умен, чтобы понять, что [Definition alloc]
, вероятно, возвращает объект Definition.
(я не могуПомните, что тот, кто написал этот пример кода, очень небрежно относится к освобождению / авто-освобождению объектов и очевидной любви к утечкам памяти.В этом файле word
никогда не освобождается, ни одно из значений, хранящихся в def
, никогда не выпускаетсяи не definitions
)