CFArrayBSearchValues中的二进制搜索警告

时间:2011-03-28 08:54:36

标签: iphone objective-c ipad nsmutablearray binary-search

我正在使用CFArrayBSearchValues

参考:http://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFArrayRef/Reference/reference.html#//apple_ref/doc/uid/20001192-CH201-F10956

它成功运行但编译器在第一个参数上显示警告:

CFIndex indexResult = CFArrayBSearchValues( 
                         m_Locations, 
                         CFRangeMake(0, [m_Locations count]), 
                         data, 
                         PGPlaceDataCompare, nil);

enter image description here

CFArrayBSearch期望第一个参数为CFArrayRef 我的m_LocationsNSMutableArray

如何解决此警告?我需要对NSMutableArray进行任何强制转换为CFArrayRef吗?

感谢。

1 个答案:

答案 0 :(得分:2)

是。只需将NSMutableArray强制转换为CFArrayRef。

CFIndex indexResult = CFArrayBSearchValues( 
                         (CFArrayRef)m_Locations, 
                         CFRangeMake(0, [m_Locations count]), 
                         data, 
                         PGPlaceDataCompare, NULL);

在iOS 4.0或更高版本中,您可以使用Objective-C method -indexOfObject:inSortedRange:options:usingComparator:代替。

 NSUInteger indexResult = [m_Locations
                            indexOfObject:data
                            inSortedRange:NSMakeRange(0, [m_Locations count])
                                  options:0
                          usingComparator:^(id a, id b) { ... }];