gpt4 book ai didi

objective-c - 为 NSUInteger 返回 NSNotFound 是否可取?

转载 作者:可可西里 更新时间:2023-11-01 03:30:11 24 4
gpt4 key购买 nike

我正在为 NSArray 开发一个类别,我实现的其中一个函数旨在返回数组中的字符串数(或不是数字)。这一切都很好,但我的问题是关于在输入数组的计数为零的情况下使用 NSNotFound 作为返回。

Apple 的文档状态:

NSNotFound is typically used by various methods and functions that search for items in serial data and return indices, such as characters in a string object or ids in an NSArray object.

如果我要对不在数组中的项目使用 indexOfObject:,这就完全有意义了。但是,在下面演示的上下文中使用 NSNotFound 是否正确?当然,我可以只返回零并收工,但看到 2147483647 并立即知道问题出在哪里会很有帮助。

- (NSUInteger)countOfStringsInArray {
NSUInteger currentCount = 0;
if ([self count] > 0) {
for (id obj in self) {
if (![obj integerValue]) {
currentCount ++;
}
}
return currentCount;
}
return NSNotFound;
}

最佳答案

不,在这种情况下不是。示例中的方法返回一个计数。您会考虑在返回 index 的方法上使用/返回 NSNotFound(例如),其中 0 也是 一个有效的索引,因此是一个错误的结果。

所以“是的,你应该简单地返回 0 并且返回类型应该是无符号的 (NSUInteger)”,因为 NSNotFound 应该与计数相关联。这确实涵盖了您的案例,而不依赖于神奇的值(value)。

如果您想知道问题出在哪里(我自己经常这样做),我发现最好不要将在集合为空时调用该方法视为程序员错误。

关于objective-c - 为 NSUInteger 返回 NSNotFound 是否可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303323/

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