Я создал собственный подкласс UIView
, который должен рисовать простую пунктирную линию. Чтобы определить цвет линии, я добавил проверяемое свойство lineColor
// LineView.h
@interface LineView : UIView
@property (nonatomic,assign) IBInspectable UIColor *lineColor;
@end
// LineView.m
- (id)initWithFrame:(CGRect)frame{
if((self = [super initWithFrame:frame])){
[self setupView];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder{
if((self = [super initWithCoder:aDecoder])){
[self setupView];
}
return self;
}
- (void)setupView {
self.lineColor = [UIColor colorWithRed:0 green:0 blue:255.0 alpha:1.0];
//self.lineColor = [UIColor blueColor]; <-- No Problem
[self refreshLine];
}
- (void)layoutSubviews {
[super layoutSubviews];
[self refreshLine];
}
- (void)refreshLine {
CGColorRef cgLineColor = self.lineColor.CGColor; // <--CRASH
...
}
- Если цвет назначен в Интерфейсном Разработчике, все работает отлично
- Если назначен цвет по умолчанию, например
[UIColor blueColor]
, все работает нормально
- Если пользовательский цвет, такой как
[UIColor colorWithRed:0 green:0 blue:255.0 alpha:1.0]
, приложение вылетает с EXC_BAD_ACCESS
[UIDeviceRGBColor responsedsToSelector:]: сообщение отправлено освобожденному экземпляру 0x6000022d08c0
Почему это?