Решение :
Это было решено с помощью многих людей. Я сейчас пишу это, чтобы люди с похожими проблемами могли извлечь из этого пользу. Чтобы воссоздать эту ошибку, мне пришлось запустить сборку дистрибутива на моем устройстве. Это было выполнено по совету MrMage, в котором говорилось, что нужно сменить сертификат на разработчика, а не на дистрибутив. Это позволило мне воссоздать ошибку и отладить ее. Проблема оказалась в том, что компилятор игнорировал все вызовы для установки значений CGSize. Мне удалось предотвратить это, установив «Уровень оптимизации» в целевых настройках на «Нет» вместо «Самый быстрый, самый маленький».
Привет,
У меня очень своеобразное приложение. Несколько дней назад мое приложение было одобрено в магазине приложений, но, к своему ужасу, я вскоре обнаружил, что в нем была серьезная ошибка. Я пошел к своему компьютеру, но когда запустил код (как в симуляторе, так и на устройстве), все заработало отлично. Я перепробовал все: перекомпилировать и зафиксировать обновление, очистить все цели, переустановить SDK и т. Д.
Вот более подробное описание проблемы. В моем приложении есть подробное табличное представление, которое загружает некоторые данные из онлайн-источника. Он отображает представление загрузки во время загрузки, а затем перезагружает представление таблицы после того, как источник данных установлен. Ячейки таблицы содержат UITextViews, который изменяет размер в соответствии с текстом. Когда я запускаю приложение на компьютере или отлаживаю на устройстве, текст загружается и отображается идеально, но когда я загружаю из App Store и запускаю его, он будет отображаться только в первый раз, а затем останется пустым остальное. Я знаю, что данные загружаются, потому что texviews изменяют размер, чтобы соответствовать тексту, они просто не отображают его.
Кто-нибудь знает, что может быть причиной этой ошибки? Как я могу узнать, содержит ли моя сборка дистрибутива ошибку, которая не отображается в отладочной сборке?
С уважением,
BEN.
PS: я сравнил целевые настройки для отладочных и дистрибутивных сборок. Единственное отличие, которое я вижу, это «Уровень оптимизации» в разделе «Генерация кода». Я попытался изменить это для отладочной сборки, но это не выявляет проблему.
РЕДАКТИРОВАТЬ: Я решил проблему, выполнив то, что предложил MrMage. Оказывается, этот код действительно является причиной ошибки. При работе в отладчике свойства ширины и высоты 's' постоянно равны нулю, и я не могу изменить это, несмотря ни на что. Я выясняю, почему это происходит.
- (void) setText:(NSString *)string
{
CGSize s = [string sizeWithFont:textView.font constrainedToSize:CGSizeMake(290, FLT_MAX)];
s.height += kStaticSize;
//SizeWithFont is very unreliable so have to do some dirty tweaking
if (s.height > 100 && s.height <= 250)
s.height += 20;
else if (s.height > 250 && s.height <= 500)
s.height += 40;
else if (s.height > 500 && s.height <= 800 )
s.height += 50;
else if (s.height > 800 && s.height <= 1200)
s.height += 60;
else if (s.height > 1200 && s.height <= 1700)
s.height += 100;
else if (s.height > 1700)
s.height += 200;
s.width = 290;
CGRect r = textView.frame;
r.size = s;
[textView setFrame:r];
[self.textView setText: string];
[self.textView setNeedsDisplay];
}