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 シミュレーターでアプリを実行すると (Xcode でコマンド + R を使用)、groupEnumerator が実行され、グループ名がコンソールに出力されます。
2)アプリの単体テストを作成しました。単体テストを実行すると(Xcodeでコマンド+ Uを使用)、アプリで呼び出されたときに上記のコードスニペットを呼び出しますが、groupEnumeratorはまったく実行されないようで、何も実行されませんグループ名の .
Apple のドキュメントを確認したところ、このメソッド (enumerateGroupsWithTypes:usingBlock:failureBlock:) が非同期であることはわかっていますが、単体テストで長時間待っても、groupEnumerator が実行されていません。
Xcode 4.2 で iOS 5.0 に対してテストしています。
どんな助けでも大歓迎です。ありがとう。