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);
        }
    };