Ios 不兼容的块指针类型初始化';void(^)(结构组*,BOOL*)和#x27;使用类型的表达式
我在上看到几个人成功地使用了这段代码。但我得到了不兼容的块指针错误: 不兼容的块指针类型正在初始化Ios 不兼容的块指针类型初始化';void(^)(结构组*,BOOL*)和#x27;使用类型的表达式,ios,objective-c,objective-c-blocks,alassetslibrary,alasset,Ios,Objective C,Objective C Blocks,Alassetslibrary,Alasset,我在上看到几个人成功地使用了这段代码。但我得到了不兼容的块指针错误: 不兼容的块指针类型正在初始化 void(^)(struct ALAssetsGroup *, BOOL *) 使用类型的表达式 void(^)(ALAsset *, NSUInteger, BOOL *) 有什么提示吗?(使用完整代码编辑) 好的,街区的新手。。。但是我在这里找到了另一个资产组枚举器块的示例,它在声明中没有struct。我尝试从上面的代码中删除它,但它仍然可以正常工作,并且没有错误消息。希望能有更好地理解s
void(^)(struct ALAssetsGroup *, BOOL *)
使用类型的表达式
void(^)(ALAsset *, NSUInteger, BOOL *)
有什么提示吗?(使用完整代码编辑)
好的,街区的新手。。。但是我在这里找到了另一个资产组枚举器块的示例,它在声明中没有
struct
。我尝试从上面的代码中删除它,但它仍然可以正常工作,并且没有错误消息。希望能有更好地理解struct
的人来解释
尝试更改此行:
void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *)
= ^(ALAssetsGroup *group, BOOL *stop)
为此:
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *)
= ^(ALAssetsGroup *group, BOOL *stop)
我认为底线是
AlassetLibrary enumerateGroupsWithTypes:usingBlock:
期望块看起来像(AlassetGroup*,BOOL*)
而不是(struct AlassetGroup*,BOOL*)
期望类型和实际类型之间的差异只是工作结构,即struct ALAsset*
vs.ALAsset*
。(在您的文字描述中,ALAsset
和ALAssetGroups
之间似乎不匹配,但我认为您复制错误消息时出错。)
我不太理解这些差异是从哪里来的(可能是因为C++在某个地方的使用)。< /P>
无论如何,最好的解决方案是分别使用类型定义ALAssetsGroupEnumerationResultsBlock
或ALAssetsLibraryGroupsEnumerationResultsBlock
,例如:
ALAssetsGroupEnumerationResultsBlock assetEnumerator = ^(ALAsset *result, NSUInteger index, BOOL *stop){
if (result != NULL) {
NSLog(@"See Asset: %@", result);
}
};
发布更多的代码——你的代码片段看起来很好。如果你能告诉我们编译器在使用哪一行代码,它将真正帮助我们。添加了显示错误消息的图像。我选择这一个作为答案,只是因为它说。。删除struct,它仍然可以正常工作!我也是。有趣的是,即使出现了“红色”错误,它也能正常编译和运行。我只想知道为什么除了我的问题,其他人没有问题!!!是的,我也发现了。谢谢你的回复。
ALAssetsGroupEnumerationResultsBlock assetEnumerator = ^(ALAsset *result, NSUInteger index, BOOL *stop){
if (result != NULL) {
NSLog(@"See Asset: %@", result);
}
};