Я опаздываю на вечеринку, но это может быть полезно кому-то.
Как говорили другие, вы не можете вернуть nil для примитивов, но вы можете сделать одно из двух, чтобы отличить ненулевое значение отнабор один.
Использование NSNotFound
- (CGFloat)calculateHeight {
// calculate height...
if (heightInvalid) return NSNotFound;
else return validFloatValue;
}
NSNotFound - это огромное число, определенное Apple и используемое ими в некоторых операциях,Затем вы можете проверить это, например:
if ([self calculateHeight] == NSNotFound) ...
Используйте
NSNumber
Вместо возврата CGFloat
сделайте так, чтобы ваша функция возвращала NSNumber
.
- (NSNumber *)calculateHeight {
// calculate height...
if (heightInvalid) return nil;
else return @(validFloatValue);
}
Затем вы можете вернуть ноль.
При получении значения вы делаете:
NSNumber *myHeightNumber = [self calculateHeight];
if (!myHeightNumber) NSLog(@"height is invalid... do something");
else myHeight = [myHeightNumber floatValue];
Надеюсь, это поможет.