我目前正在研究一个分为两个类的项目,“Array”类和“PPCalcVals”类。因为将要添加的其他类也必须访问数组,所以我认为最好编写数组类,其中包含 NSMutableArray 和所有其他的子类(从 PPCalcVals 类开始。所以 'PPCalcVals ' 类需要访问超类 'Array' 中的数组元素。(如果这是错误的方法,请纠正我)。如前所述,整个程序是用 C 编写的并且运行良好,但要创建一个 GUI 并最终创建一个 OSX或 IOS 应用程序,我开始使用 Objecitve C 学习 OOProgramming。无论如何,当我引用超类数组中的对象时,唯一打印的值是“null” 这不是我真正想要的。这是代码:
主程序:
#import <Foundation/Foundation.h>
#import "Array.h"
#import "PPCalcVals.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Array *prices = [[Array alloc]initWithName:@0];
PPCalcVals *myVals = [[PPCalcVals alloc]init];
[prices addValue:@12];
[prices addValue:@13];
[prices addValue:@14];
[prices addValue:@15];
[prices addValue:@15];
[prices print];
[myVals print];
}
return 0;
}
数组.h 文件:
#import <Foundation/Foundation.h>
@interface Array : NSObject
{
NSMutableArray *prices;
}
-(id) initWithName: (NSNumber *) values;
-(void) addValue: (NSNumber *) value;
-(void) print;
-(NSMutableArray *) prices;
@end
数组.m
#import "Array.h"
@implementation Array
-(id) initWithName:(NSNumber *)values
{
self = [super init];
if(self)
{
prices = [NSMutableArray array];
}
return self;
}
-(void) addValue: (NSNumber *) value
{
[prices addObject:value];
}
-(void) print
{
NSLog(@"%@",prices);
}
-(NSMutableArray *)prices
{
return prices;
}
@end
PPCalcVals.h:
#import "Array.h"
@interface PPCalcVals : Array
@property id high,low,open,close;
-(void) setHigh:(NSMutableArray *)h setLow:(NSMutableArray *)l; //set high and low
-(void) setOpen:(NSMutableArray *)o setClose:(NSMutableArray *)c; //set open and close
-(void) sort; //sort array
-(void) print; //debugging tool
@结尾
PPCalcVals.m:
#import "PPCalcVals.h"
@implementation PPCalcVals
@synthesize high,low,open,close;
-(void) setOpen:(NSMutableArray *)o setClose:(NSMutableArray *)c
{
o = prices[0];
c = prices[2];
open = o;
close = c;
}
-(void) sort;
{
[prices sortedArrayUsingComparator:^(NSString *str1, NSString *str2) {
return [str1 compare:str2 options:NSNumericSearch];
}];
}
-(void) setHigh:(NSMutableArray *)h setLow:(NSMutableArray *)
{
h = prices[0];
l = prices[2];
high = h;
low = l;
}
-(void) print
{
NSLog(@"open: %@",open);
NSLog(@"close: %@",close);
NSLog(@"high: %@",high);
NSLog(@"low: %@",low);
}
@end
正在运行的程序仅输出:
2013-08-05 10:21:08.546 prog1[1314:303] (
12,
13,
14,
15,
15
)
open: (null)
close: (null)
high: (null)
low: (null)
我意识到这可能是一个非常基本的问题,但我非常感谢您的帮助,如果您阅读到这一点,我已经感谢您;)