gpt4 book ai didi

objective-c - Objective C - 非空 block 的用途是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:47:35 24 4
gpt4 key购买 nike

我见过很多返回类型为 void 的 block 。但是可以声明非空 block 。这个有什么用?

block 声明,

-(void)methodWithBock:(NSString *(^)(NSString *str))block{
// do some work
block(@"string for str"); // call back
}

使用方法,

[self methodWithBock:^NSString *(NSString *str) {

NSLog(str); // prints call back
return @"ret val"; // <- return value for block
}];

在上面的 block 声明中, block 的 NSString 返回类型的目的到底是什么?如何使用返回值(“ret val”)?

最佳答案

出于与使用非空函数指针相同的原因,您可以使用非空 block - 在代码执行时提供额外的间接级别。

NSArraysortUsingComparator 提供了这样一种用法的示例:

NSArray *sorted = [originalArray sortedArrayUsingComparator:(NSComparator)^(id obj1, id obj2){
NSString *lhs = [obj1 stringAttribute];
NSString *rhs = [obj2 stringAttribute];
return [lhs caseInsensitiveCompare:rhs];
}];

比较器 block 让您可以将比较逻辑封装在执行排序的sortedArrayUsingComparator方法之外。

关于objective-c - Objective C - 非空 block 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14736763/

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