Я пытаюсь реализовать очень простую анимацию рисования линий для моего приложения для iPhone. Я хотел бы нарисовать прямоугольник на моем виде после задержки. Я использую performSelector
для запуска метода рисования.
-(void) drawRowAndColumn: (id) rowAndColumn
{
int rc = [rowAndColumn intValue];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGRect rect = CGRectMake(rc * 100, 100, 100, 100);
CGContextAddRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);
}
Который затем вызывается через:
int col = 10;
[self performSelector:@selector(drawRowAndColumn:)
withObject:[NSNumber numberWithInt:col]
afterDelay:0.2];
Но, похоже, что когда сообщение drawRowAndColumn:
действительно отправлено, оно больше не имеет доступа к действительному CGContextRef
, так как я получаю такие ошибки, как:
<Error>: CGContextAddRect: invalid context
Если я заменю performSelector
прямым вызовом на drawRowAndColumn
, он будет работать нормально. Поэтому моей первой идеей было также передать CGContextRef
через performSelector
, но я не могу понять, как передать несколько аргументов одновременно (это еще один хороший вопрос).
Что не так с кодом выше?