typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
- ^表示一个块类型,在概念上与函数指针类似。
typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
// ^ ^ ^
// return type of block type name arguments
该类型NSComparator是一个块,取入类型的两个对象id所谓obj1和obj2,并返回一个NSComparisonResult。 特别是NSComparator在基础数据类型引用的定义。 并了解更多关于C块,看看这个文章的ADC模块编程主题。 例如:
NSComparator compareStuff = ^(id obj1, id obj2) {
return NSOrderedSame;
};
NSComparisonResult compResult = compareStuff(someObject, someOtherObject);
2.“这怎么不是一个函数指针有什么不同?”:
1)块是不是一个函数指针。块是苹果的作为在如何使函数一等公民在C / C ++/ Objective-C的。这是新的iOS 4.0。
2)为什么要引入这个陌生的概念?原来,在不少情况下一流的函数 CodeGo.net,例如管理工作,可以并行执行,如在大中央调度块。超越GCD,理论是足够重要的,有围绕它的整个软件系统。lisp是优先个。
3)你会看到这个概念在许多其他语言,而是由不同的,例如微软。Net有lambda表达式和委托(没有联系到Objective-C的代表),而最通用的大概函数或优先类函数。