我是使用 Objective C 进行 iPhone 开发的初学者,我发现我经常做的一件事是让 float (和整数)进出各种 NSArrays
float myFloatValue = [(NSNumber *)[myArray objectAtIndex:integerSelector] floatValue];
我知道我需要进行此装箱,因为 float (或整数)不是指针,而 NSArray 只接受指针。
我只是想知道是否有一点语法糖来缩短这行代码 - 主要是因为当我有几个数组并且我正在遍历它们进行一些处理时我发现这些行开始变得越来越巨大的,我必须打破从数组中提取数字的行只是为了使代码可读 - 然后我有很多笨拙的行,这些行往往会使逻辑更难理解。
在像 C# 这样的语言中,我会写这样的东西
float myResult = myArray[i] + someOtherArray[i+1];
(好的 - 这可能是一行非常愚蠢的代码 - 但从语法上讲它很干净,我猜是因为 .net 在我看不到的地方隐式地进行了装箱)
在 Objective-C 中,我发现自己在写:
float myFloatValue = [(NSNumber *)[myArray objectAtIndex:i] floatValue];
float myOtherFloatValue = [(NSNumber *)[someOtherArray objectAtIndex:i+1] floatValue];
float myResult = myFloatValue + myOtherFloatValue;
我只是想知道我是否错过了通过全手输入的技巧。我应该使用 NSArray 的替代品吗?有没有装箱/拆箱的快捷方式?
或者我想,我应该习惯它并停止提示 ;)
最佳答案
您可以创建一个类别:
@class NSArray (FloatHelper)
- (float) floatAtIndex:(NSUInteger)i;
@end
@implementation NSArray (FloatHelper)
- (float) floatAtIndex:(NSUInteger)i {
return [[self objectAtIndex:i] floatValue];
}
@end
(未经测试且没有错误处理,这显然不是一个好主意。)
那么它可以像下面这样使用:
float a = [array floatAtIndex:1];
关于iphone - 有没有一种从数组中获取 float 的简写方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971800/