Есть ли веская причина, почему я не должен делать что-то подобное? Пример:
У меня есть класс MyClass. Там у меня есть эта реализация:
- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[MyClass allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}
Вместо этого я нашел фрагмент, который выглядит так:
- (id)copyWithZone:(NSZone*)zone {
MyClass *copy = [[[self class] allocWithZone:zone] init];
copy.someproperty = [[self.someproperty copy] autorelease];
return copy;
}
Разница в том, что первое просто использует имя, если его собственный класс по-человечески читается, как если бы это был какой-либо другой класс. А второй спрашивает себя, для какого класса. Разве это имеет значение или оба полностью подходят для использования в этом случае?