dispatch_async
- это не блокирующий метод, поэтому он немедленно вернется. Поэтому, когда вызываются операторы DLog
вне блока, они в основном не будут установлены. Следовательно, вы не видите значений, которые вы получаете из операторов внутреннего журнала.
Если вы хотите воздействовать на данные в том же методе, вам придется либо отправить блокировку dispatch_sync
, которая не имеет смысла, либо вы можете вызвать методы внутри блока.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
....
[self doStuffWithTheArrays];
});
Как только блок будет выполнен, объекты будут доступны при условии, что они являются переменными экземпляра, или вы потеряете ссылки.