а) не держитесь за графический контекст, подобный этому
б) вы хотите нарисовать изображение из-за переопределения drawRect:
. В качестве альтернативы, вы можете удерживать нужные данные и делать недействительными те прямоугольники, которые вам нужны для рисования в touchesMoved. затем используйте состояние, которое вы спрятали, чтобы нарисовать из drawRect:
.
Суть в том, что вы должны сделать недействительным, а затем рисовать по запросу. рисование вне этого контекста оставит вас с непредсказуемыми результатами рисования (обрезанные фрагменты, неожиданное упорядочение и другое поведение), а также заставит программу рисовать несколько раз.