У меня проблема с памятью (да;) Я новичок в iOS) со следующим методом в пользовательском UIView:
Файл заголовка
....
@property (nonatomic, retain) NSString * pressureTextLabel;
....
Реализация рисует круг и меткус давлением, связанным с прикосновением.Каждое прикосновение пальца создает объект этого вида:
- (void)drawRect:(CGRect)theRect{
CGRect rect = self.bounds;
CGRect ringRect = CGRectInset(rect, 100, 100);
// Outer ring.
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:ringRect];
ringRect = CGRectInset(rect, 60, 60);
[path appendPath:[UIBezierPath bezierPathWithOvalInRect:ringRect]];
path.usesEvenOddFillRule = YES;
[self.color set];
[path fill];
//text label
rect = CGRectMake(100, 20, 100, 100);
//This one seems to be the troublemaker
[pressureTextLabel drawInRect:rect withFont:[UIFont systemFontOfSize:14.0]];
}
все работает нормально, если контроллер не вызывает следующий метод для обновления измеренного давления для этого конкретного прикосновения.
-(void) setTouchPressureTo: (float) pressure{
pressureTextLabel = [NSString stringWithFormat:@"%f", pressure];
[self setNeedsDisplay];
}
Я получаю следующую ошибку:
*** -[CFString drawInRect:withFont:]: message sent to deallocated instance 0x16e8c0
, которая заставила меня исследовать трассировку памяти в консоли отладки после сбоя приложения: shell malloc_history <PID> 0x17dfb0
.В результате консоль возвращает:
malloc_history cannot examine process 5838 because the process does not
Существуют.
Итак, вот вопрос:
- Может ли кто-то увидеть очевидное удержаниевыпустить проблему здесь?
- Как мне заставить
malloc_history <PID>
<Address
> работать?
Спасибо за ваше время, перенаправления и ответы!
Кристиан