gpt4 book ai didi

objective-c - 是否-[NSOrderedSet indexesOfObjectsPassingTest :] really return either an NSIndexSet or NSNotFound?

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:51 24 4
gpt4 key购买 nike

我有这个代码:

NSIndexSet *indexes = [anOrderedSet indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
if([self testObj: obj]) return YES;
else return NO;
}];

if(indexes == NSNotFound) NSLog(@"No objects were found passing the test");

这会导致 Xcode 发出警告,指出“指针和整数之间的比较('NSIndexSet *' 和 'int')”。在这一点上我完全同意 Xcode。

但是,该函数的返回值是 NSIndexSet* 类型,Apple 文档 ( http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html ) 指出:

Return Value
The index of the corresponding value in the ordered set that passes the test specified by predicate. If no objects in the ordered set pass the test, returns NSNotFound.."

那么当函数的返回类型是指向NSIndexSet 的指针时,返回NSNotFound(它是一个NSInteger)有什么用呢?通过将比较更改为以下内容来抑制警告是否安全:

if(indexes == (NSIndexSet*) NSNotFound) NSLog(@"No objects were found passing the test");

因为,理论上,索引可以是一个有效的返回 NSIndexSet 指针,恰好指向等于 NSNotFound 的内存地址,对吗?

最佳答案

恐怕文档有误。

你应该检查一个空的 NSIndexSet:

if ([indexes count] == 0) NSLog(@"No object were found passing the test");

您可能应该向 Apple 提交错误报告。

关于objective-c - 是否-[NSOrderedSet indexesOfObjectsPassingTest :] really return either an NSIndexSet or NSNotFound?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093872/

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