alloc
- метод класса, но init
- метод экземпляра. В вашем коде компилятор жалуется, что не может найти метод класса с именем init
, который является точным. Чтобы исправить это, вы должны позвонить init
на экземпляр, который вы получили обратно от alloc
, например:
myFraction = [Fraction alloc];
myFraction = [myFraction init];
но самый распространенный способ - это вложить вызовы так:
// calls -init on the object returned by +alloc
myFraction = [[Fraction alloc] init];
Это также помогает избежать ошибок, которые могут возникнуть при вызове методов для объекта, который был выделен, но еще не инициализирован.