Objective-C 中两个变量(双精度)的数据结构

Data Structure for Two Variables (Doubles) in Objective-C

我正在寻找最好的数据结构(容器),它将只在 Objective-C 中存储两个变量(Mac OS X 或 iOS app):

-(X) minAndMaxFinder: (NSMutableArray *)dataX {
double maxX = [[dataX valueForKeyPath:@"@max.intValue"] doubleValue];
double minX = [[dataX valueForKeyPath:@"@min.intValue"] doubleValue];
//adding these two variables (minX and maxX) to the structure X, later these data will be used in different methods 
return X;
}

应该是NSArray还是别的? NSDictionary 不是强制性解决方案,因为这两个变量不需要像键值那样连接。例如,NSMutableArray 可以轻松更改存储的变量,但也可以添加更多额外的变量。可能最好保持限制不要让添加额外的变量,如 NSArray。据我所知,除非集成 C++,否则 Objective C 中没有向量。

在这种情况下最推荐哪种解决方案?

我在处理 st运行ge 问题时自己 运行 对此进行了研究,而这是最佳解决方案。这不是一个典型的需要,所以考虑寻找另一种方法来解决它,但是,我有一个非常简单的 class 我称之为一对。它对我来说是不变的,但它不一定适合你。

@interface DGCPair : NSObject

@property (nonatomic, readonly) id first;
@property (nonatomic, readonly) id second;

- (instancetype)initWithFirst:(id)first 
                       second:(id)second;

@end

即使您的实现文件除了 init 方法之外大部分都是空的,这也应该符合您的目的。对于可以使用基本数据结构(或元组,如果我们有的话)可以愉快地完成的事情来说,这可能有点矫枉过正,但它完成了工作。我的实现 NSCopying 是为了成为字典中的键,但是,同样,你的不必这样做。

所以在你的情况下你可以:

-(DGCPair *)minAndMaxFinder:(NSArray *)dataX {
    double maxX = [[dataX valueForKeyPath:@"@max.intValue"] doubleValue];
    double minX = [[dataX valueForKeyPath:@"@min.intValue"] doubleValue];

    return [[DGCPair alloc] initWithFirst:@(maxX) second:@(minX)];
}

您只需确保记住或记录哪个对象在哪个位置(第一个最大,第二个最小)。