Я использую платформу AssetsLibrary для получения всех групп ресурсов в iPhone. У меня есть такой фрагмент кода:
NSMutableArray *groups = [[NSMutableArray alloc] initWithCapacity:5];
void (^groupEnumerator)(ALAssetsGroup*, BOOL*) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
NSLog(@"Adding group %@", [group valueForProperty:ALAssetsGroupPropertyName]);
[groups addObject:group];
}
};
ALAssetsLibrary* library = [AssetsManager defaultAssetsLibrary];
[library enumerateGroupsWithTypes: ALAssetsGroupSavedPhotos
usingBlock:groupEnumerator
failureBlock:^(NSError * err) {NSLog(@"Erorr: %@", [err localizedDescription]);}];
И я обнаружил странное поведение:
1) Когда я запускаю свое приложение в симуляторе iOS (используйте команду + R в Xcode), будет выполнен groupEnumerator и имена групп будут напечатаны в консоли.
2) Я написал некоторый модульный тест для своего приложения, когда я запускаю модульный тест (используйте команду + U в Xcode), который вызывает приведенный выше фрагмент кода, поскольку он вызывается в моем приложении, groupEnumerator, похоже, не выполняется вообще и ни один имени группы будет напечатано, и failBlock тоже не вызывается, и я не получаю никаких ошибок при запуске тестов, но перечисление групп не работает, как в приложении.
Я проверяю документацию Apple, и я знаю, что этот метод (enumerateGroupsWithTypes: usingBlock: failureBlock :) является асинхронным, однако, даже если я долго жду в своем модульном тесте, я не вижу выполнения groupEnumerator.
Я тестирую iOS 5.0 с Xcode 4.2.
Любая помощь приветствуется. Спасибо.