Когда вы говорите цикл до Я предполагаю, что вы действительно имеете в виду ждать до .
Прежде всего, если это ожидание должно быть сделано в главном потоке, просто забудьте оникогда не блокируйте основной поток.
Вместо цикла вы, вероятно, захотите использовать блокировку и дождаться выполнения условия.Для этого требуется общая блокировка между кодом, в котором вы ожидаете заполнения массива, и кодом, в котором вы заполняете массив.
Сначала создайте блокировку общего условия следующим образом:
typedef enum {
MYConditionStateNoObjects,
MYConditionStateHaveObjects
} MYConditionState;
...
sharedArray = [[NSMutableArray alloc] init];
sharedLock = [[NSConditionLock alloc] initWithCondition:MYConditionStateNoObjects];
Ваш метод, который заполняет массив, должен затем сделать: