gpt4 book ai didi

iphone - 使用 Assets Library 时 iPhone 和 iPad 之间的不同行为

转载 作者:行者123 更新时间:2023-11-29 13:46:27 25 4
gpt4 key购买 nike

我在应用程序上使用 Assets 库来枚举设备的照片事件。

我的代码在我的 iPad 上测试时运行良好。列举了照片事件,我可以完美地处理它们。当我在我的 iPhone 上尝试完全相同的代码时,没有任何反应(而且我在这个设备上也有照片事件)。看起来好像甚至没有调用枚举代码(即控制台中没有出现日志,参见代码)。

代码如下:

- (void)loadEvents {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupEvent
usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (group) {
[photosEventsArray addObject:group];
NSLog(@"Adding group");
} else {
NSLog(@"End of the enumeration");
}
}
failureBlock: ^(NSError *error) {
NSLog(@"Failure while enumerating assets: %@", error);
}];
[library release];

NSLog(@"Found %d events", photosEventsFound);

[self performSelectorOnMainThread:@selector(stopSpinner) withObject:nil waitUntilDone:YES];
[pool drain];
}

我的部署目标是 iOS 4.1。

知道这里出了什么问题吗?

最佳答案

经过更多调查,似乎在 iOS 4.3.5 上,必须从主线程调用 enumerateGroupsWithTypes 方法。

我已经用这种方式修补了我的代码(从 iPhone 和 iPod Touch 设置为 NO,从 iPad 设置为 YES):

if (scanAssetsInBackground) {
[self performSelectorInBackground:@selector(loadEvents) withObject:nil];
} else {
[self performSelectorOnMainThread:@selector(loadEvents) withObject:nil waitUntilDone:YES];
}

适用于该补丁。

Apple 文档中没有太多关于此的信息,也无法知道哪种方式(后台或主线程)是扫描 Assets 库的正确方式。

关于iphone - 使用 Assets Library 时 iPhone 和 iPad 之间的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com