3

如果我有一个返回 CGFloat 的方法并且该方法找不到预期的数字怎么办,我想返回类似 NSNotFound 的东西,但那是一个 NSInteger。

对此的最佳做法是什么?

4

2 回答 2

3

您不能使用数字( NaN)。

见和。nan()_nanf()isnan()

但是对于这些问题,如果没有明确定义的非值(整数更糟),那么我更喜欢使用以下方法语义:

- (BOOL)parseString:(NSString *)string
            toFloat:(CGFloat *)value
{
    // parse string here
    if (parsed_string_ok) {
        if (value)
            *value = parsedValue;
        return YES;
    }
    return NO;
}
于 2014-12-12T15:26:20.527 回答
3

一个非常干净的方法是将它包装成一个 NSNumber:

- (NSNumber *)aFloatValueProbably
{
    CGFloat value = 0.0;
    if (... value could be found ...) {
        return @(value);
    }
    return nil;
}

然后您可以检查该函数是否为您不存在的值返回 nil。

于 2014-12-12T15:37:39.843 回答