В Objective-C есть метафора Alloc / Init. Они также добавили общий удобный метод под названием «new», который внутренне просто вызывает оба подряд. И если я создаю подкласс NSObject с именем FooClass, FooClass выбирает эти общие методы, в том числе 'new'.
НО ... как, черт возьми, это реализовано ??
Он не может просто делегировать базовому классу, потому что это просто создаст экземпляр экземпляра NSObject, а не вашего производного класса FooClass, но он все еще работает! Так как бы кто-нибудь написать что-то подобное?
Другими словами, базовый класс не должен быть таким ...
+ (id) somethingLikeNew{
return [[NSObject alloc] init];
}
А точнее это ...
+ (id) somethingLikeNew{
return [[<SomethingThatMapsToFooClassType> alloc] init];
}
... где 'SomethingThatMapsToFooClassType' - это тип производного класса, который наследуется от NSObject и который должен подобрать общий метод'thingLikeNew '.
По сути, я добавляю категорию из NSObject, и у меня есть общие методы, которые должны знать тип, но все реализации являются общими, поэтому я делаю категорию в NSObject, а не везде в моих файлах классов ( точно так же, как у тебя нет «нового» повсюду. Это просто там.)
Кто-нибудь? Bueller? Bueller
M