传递函数作为参数

时间:2011-07-22 20:41:00

标签: objective-c function parameter-passing

我想搜索一个NSDate数组,所以我在这里做:

searchResult = CFArrayBSearchValues((CFArrayRef)someDateArray, arrayRange, dateToFind, CFDateCompare, nil);

但是,我收到了这个警告:

不兼容的指针类型将'CFComparisonResult(CFDateRef,CFDateRef,void )'传递给'CFComparatorFunction'类型的参数(又名'CFComparisonResult()(const void *,const void *,void *)' )

如何正确传递函数作为参数?我想我的语法错了。

1 个答案:

答案 0 :(得分:4)

您需要将函数指针强制转换为CFComparatorFunction类型,因为它具有更明确的签名(它使用CFDateRef而不是void *)。

searchResult = CFArrayBSearchValues((CFArrayRef)someDateArray, arrayRange, dateToFind, (CFComparatorFunction)CFDateCompare, nil);