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)];
}
您只需确保记住或记录哪个对象在哪个位置(第一个最大,第二个最小)。
我正在寻找最好的数据结构(容器),它将只在 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)];
}
您只需确保记住或记录哪个对象在哪个位置(第一个最大,第二个最小)。