我看到SO上的几个人已成功使用此代码.但是我得到了不兼容的块指针错误:
不兼容的块指针类型初始化
void(^)(struct ALAssetsGroup *,BOOL *)
带有类型的表达式
void(^)(ALAsset *,NSUInteger,BOOL *)
任何提示? (编辑完整代码)
ALAssetsLibrary *library =[[ALAssetsLibrary alloc]init]; void (^assetEnumerator)(struct ALAsset *,BOOL *) = ^(ALAsset *result,NSUInteger index,BOOL *stop){ if(result != NULL) { NSLog(@"See Asset: %@",result); } }; void (^assetGroupEnumerator)(struct ALAssetsGroup *,BOOL *) = ^(ALAssetsGroup *group,BOOL *stop) { if(group != nil) {NSLog(@"dont See Asset: "); [group enumerateAssetsUsingBlock:assetEnumerator]; } }; [library enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:assetGroupEnumerator failureBlock: ^(NSError *error) { NSLog(@"Failure"); }];
解决方法
好吧,新手在块…但我在这里找到了另一个资产组枚举器块的例子,它在声明中没有结构.我尝试从上面的代码中删除它,它仍然正常工作,没有错误消息.希望能更好地理解struct的人可以解释一下吗?
尝试更改此行:
void (^assetGroupEnumerator)(struct ALAssetsGroup *,BOOL *) = ^(ALAssetsGroup *group,BOOL *stop)
对此:
void (^assetGroupEnumerator)(ALAssetsGroup *,BOOL *stop)
我认为底线是ALAssetsLibrary枚举GroupsWithTypes:usingBlock:需要一个看起来像(ALAssetsGroup *,BOOL *)的块(struct ALAssetsGroup *,BOOL *).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。