什么是NSComparisonResultNSComparator

我看过一种类型定义,类似这样:

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);

与函数指针有什么不同吗?

另外,我什至无法猜测^符号的含义。

最佳答案

^表示块类型,概念上类似于函数指针。

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
//          ^                      ^                ^
//   return type of block      type name       arguments

这意味着NSComparator类型是一个块,它接受两个名为idobj1obj2类型的对象,并返回一个NSComparisonResult

具体来说,NSComparator是在Foundation Data Types reference中定义的。

要了解有关C块的更多信息,请查看此ADC文章Blocks Programming Topics

例子:
NSComparator compareStuff = ^(id obj1, id obj2) {
   return NSOrderedSame;
};

NSComparisonResult compResult = compareStuff(someObject, someOtherObject);

09-19 00:14