gpt4 book ai didi

ios - 返回 block 的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:26:03 24 4
gpt4 key购买 nike

我写了一个可以与点符号一起使用的方法,使用 block 技巧

- (RaginiDBQuery *(^)(id object))where;

可以使用点符号调用此方法,因为基本上它不接收任何参数,(它接收,但使用返回的 block )

所以我可以这样调用它:

query.where(对象)

我需要它而不是获取一个 id 对象 我想在这个方法中接收类似的东西:

- (NSEnumerator *)where:(BOOL (^)(id object))predicate;

这个方法可以这样调用:

[object where:^(id a){return [a intValue]%2 == 1}];

我想要的是将两者结合起来,使用点符号调用我的方法 where,但是像上面的例子一样向它发送一个谓词 block ,我试过这个:

- (RaginiDBQuery *(^)(BOOL (^)(id object))where;

但这给了我错误,所以问题是:

我如何声明一个 block ,它需要一个 block ?

编辑:

对于任何在下面寻找答案的人,这里是 tl;dr

- (RaginiDBQuery *(^)(BOOL(^filterBlock)(id object)))where;

最佳答案

唯一的错误基本上是缺少右括号。正确的方法应该写成:

- (RaginiDBQuery *(^)(BOOL(^)(id))) where;

稍后可以通过

调用
self.where(^BOOL(id obj) {return [obj intValue] % 2 == 1;});

但是为了可读性,强烈建议按照 rob 的建议使用 typedef,否则很难理解要传入什么以及从函数返回什么。

关于ios - 返回 block 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30560280/

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