Я хотел бы подкласса UIBezierPath добавить свойство CGPoint.Подкласс и методы класса
@interface MyUIBezierPath : UIBezierPath
@property CGPoint origin;
@end
Я использую это так:
MyUIBezierPath * path0 = [MyUIBezierPath bezierPathWithRoundedRect:
CGRectMake(0, 0, 20, 190) byRoundingCorners:UIRectCornerAllCorners
cornerRadii:CGSizeMake(10, 10)];
Компилятор жалуется: Incompatible pointer types initializing 'MyUIBezierPath *__strong' with an expression of type 'UIBezierPath *'
bezierPathWithRoundedRect
возвращает UIBezierPath.
Поэтому я не могу отправить setOrigin:
в path0, не являясь экземпляром MyUIBezierPath.
Что нужно изменить, чтобы иметь bezierPathWithRoundedRect
вернуть экземпляр моего класса?
Редактировать: После прочтения связанного с этим вопроса, я чувствую, что подкласс не может быть лучше всего в этом случае (расширение функций UIBezierPath).
Так вы как раз говорил, что я должен создать 'initWithRoundedRect', что это перевыполнение' bezierPathWithRoundedRect'. Я действительно не вижу повторного использования кода здесь. Не следует ли мне что-то делать с экземпляром UIBezierPath, возвращаемым 'bezierPathWithRoundedRect'? – alecail
Проблема в том, что он всегда будет возвращать экземпляр UIBezierPath. Поскольку единственный способ создания и инициализации экземпляров - использовать методы класса, я не могу понять, как инициализировать подкласс этого класса. – Gabriel