Как отладить проблему зависания в моем приложении iOS

У меня есть приложение, созданное на Objective-C. Это приложение всегда работало правильно. Вчера мой Xcode игнорировал все новое, что я создал, поэтому я обновил его до Xcode 10.1 (10B61). Во всяком случае, я редактировал другое приложение, а не следующее.

После этого версия приложения была обновлена ​​в App Store (я отправил ее 2 дня назад), и в 18:00 мой босс позвонил мне на телефон и сказал, что приложение вылетает.

Сегодня я убедился, что приложение не вылетает, оно зависает. Холодно, когда происходит что-то из перечисленного:

  1. Открыть или закрыть клавиатуру
  2. Открыть или закрыть любое мероприятие
  3. Сделайте запрос с помощью AFNetworking framework

Я попытался выполнить проверку с помощью git для инициализации месяца, но это все еще не сработало. Итак, я выполнил проверку инициализации за последний месяц (9 октября), и она все еще замерзает. Но эти версии приложения работали без ошибок.

Я пробовал отлаживать его до тех пор, пока на сборке не смог исправить AFNetworking, впервые изменивший код Framework. При попытке установить заголовок запроса приложение dispatch_sync зависает, я могу изменить его на dispatch_async и исправить 1/3 проблемы, запросы все еще работают с асинхронным режимом. Линия: ./Pods/AFNetworking/Serialization/AFURLRequestSerialization.m:306

- (NSDictionary *)HTTPRequestHeaders {
    NSDictionary __block *value;
    dispatch_sync(self.requestHeaderModificationQueue, ^{
        value = [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders];
    });
    return value;
}

Теперь мой босс сказал мне, что все два приложения зависают. И я ничего не обновлял в первом упомянутом приложении. Приложения из одного проекта, работают как Uber.

Кто-нибудь имеет представление о том, что происходит?

==== РЕДАКТИРОВАТЬ0 ====

В настоящее время мы заметили, что приложение может быть встроено на другой компьютер, как и раньше. Итак, приложения, которые создаются на моем Mac, зависают, проблема не в коде, какой-то библиотеке, обновлении или чем-то еще. Вероятно, это мой компьютер, мы попробуем использовать другой Mac для создания и отправки приложений.

Если это решит проблему, я отправлю решение здесь и поговорю со службой поддержки Apple.

Я предлагаю вам создать MCVE. Создайте пустой проект, добавьте AFNetworking и посмотрите, сможете ли вы выявить проблему. Скорее всего, вы этого не сделаете, поэтому вам придется начать добавлять код, созданный по образцу того, как он у вас есть в вашем приложении, пока вы не сможете проявить проблему. (Другой подход состоит в том, чтобы скопировать ваш проект, начать извлекать все, не связанное с проблемой, и продолжать повторять этот процесс до тех пор, пока вы не перестанете проявлять проблему.) Но этот вопрос слишком широк в том виде, в каком он стоит сейчас.

Rob 29.11.2018 16:55

Если вы вызываете dispatch_sync из той же очереди, значит, вы зашли в тупик.

rmaddy 29.11.2018 17:13

похоже, вам нужен новый Mac

GeneCode 30.11.2018 00:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
1 083
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключалась в том, что каждое приложение iOS, встроенное в мой Mac, начало случайным образом зависать в функциях dispatch_sync. Я попробую отформатировать свой компьютер или куплю новый.

В этом буквально нет смысла, но проблема решена.

Другие вопросы по теме