У меня есть два подкласса UIView, например «Класс A» и «Класс B». Класс А в его инициализаторе имеет код [self addSubview:instanceOfClassB];
. А в классе B drawRect:
- это строка кода [self addSubview:imageViewInstance];
. Также в классе B drawRect:
я присваиваю значения этому объекту imageView animationImages
, animationDuration
и animationRepeatCount
. Однако я также вызываю startAnimating
в этом экземпляре UIImageView, но он всегда вызывает сбой приложения. Затем я попытался назвать startAnimating
на этом UIImageView, например от drawRect:
из надтаблицы класса B, в класс А. Однако он по-прежнему падает с ошибкой:Есть ли метод, вызываемый непосредственно после drawRect :?
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
И имеет «Тема 1: сигнал SIGABRT» сообщение на линии с кодом [imageView startAnimating];
.
Я подозреваю, что он сбой здесь, потому что drawRect
класса B вызывается после drawRect
класса A, поэтому, когда я сообщаю, что просмотр изображения запускает анимацию, он падает, потому что изображение еще не создано. Так что в основном то, что я прошу, это в каком методе я могу сказать, что изображение должно начать анимацию без сбоя?
Вы можете добавить контрольную точку исключения, чтобы увидеть, где именно сбой вашего кода: http://developer.apple.com/library/ios/#recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html –
@weichsel - я идентифицировал где именно он падает; проблема в том, что я не могу найти альтернативный способ выполнить то, что я опишу выше. – pasawaya
Вопрос: Почему вы добавляете изображениеViewInstance внутри drawRect? почему не в методе init? –