Я узнаю эту проблему по одному из моих собственных проектов.Обычно, когда setFrame:
падает, это потому, что вы пытаетесь установить NaN (не число).Я не знаю, имели ли вы дело с NaN раньше, но если вы еще не оставили комментарий, и я предоставлю информацию о том, как с ним работать.
РЕДАКТИРОВАТЬ: Я подумал, что могу привести пример.
Вот пример кода, объясняющий, почему ошибку трудно воспроизвести и как ее исправить.Я не знаю, как выглядит ваш код, но ваша проблема звучит достаточно схоже, чтобы заставить меня поверить, что вы совершили ту же ошибку, что и я.
Рассмотрим следующий код:
- (void)layoutSubviews {
CGRect imageFrame;
switch (self.state) {
case 0:
imageFrame = CGRectMake(0, 0, 100, 100);
case 1:
imageFrame = CGRectMake(10, 10, 50, 50);
}
self.imageView.frame = imageFrame;
}
Учтите, что self.state
равно 2, тогда imageFrame
никогда не будет инициализирован и будет содержать все, что было в этой ячейке памяти, возможно, NaN.Причина, по которой это трудно воспроизвести, состоит в том, что сбой происходит только тогда, когда в этой ячейке памяти есть NaN.
В моем примере ошибку очень легко обнаружить, и, вероятно, ее не так легко обнаружитьв вашем коде.Если вы не можете найти его самостоятельно, не стесняйтесь опубликовать свой код, и я посмотрю на него.Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.