我想创建 2 个可以在程序运行期间更新的全局数组。在每次更新中,我将一个元素添加到第零位并删除了我创建数组的最后一个数字......在 .h 文件中...... ....... //////////////
@interface Shared : NSObject{
NSMutableArray *x;
NSMutableArray *y;
}
@property (nonatomic,retain) NSMutableArray *x;
@property (nonatomic,retain) NSMutableArray *y;
+(Shared*)sharedInstance;
@end
在 .m 文件中
staticShared* sharedInstance;
@implementation Shared
@synthesize x;
@synthesize y;
+(Shared*)sharedInstance
{
if (!sharedInstance) {
sharedInstance=[[Sharedalloc]init];
}
returnsharedInstance;
}
-(Shared*)init
{
self = [superinit];
if(self)
{
x=[[NSMutableArrayalloc] init];
x=[NSMutableArrayarrayWithObjects:@"0",@"0",@"0",@"0",@"0",@"0",@"0",nil];
y=[[NSMutableArrayalloc] init];
y=[NSMutableArrayarrayWithObjects:@"0",@"0",@"0",@"0",@"0",@"0",nil];
}
returnself;
}
@end
然后我用下面的代码调用它们并重新添加元素....
[[shared sharedInstance].y removeLastObject];
[[shared sharedInstance].y insertObject:new_element atIndex:0];
[[shared sharedInstance].x removeLastObject];
[[shared sharedInstance].x insertObject:new_element atIndex:0];
同时,我调用这些值并使用表达式计算算术值。
这似乎运作良好。但这似乎是一种处理我存储在其中的浮点数的低效方法。由于这些数组创建对象。有没有什么简单的方法可以创建一个包含指定数量的浮点数的全局数组,并在程序运行期间通过删除最后一个对象来更新它(数组大小是固定的),然后再调用它们进行计算?
请帮我!
编辑 1 致 deanWombourne 先生 .................... 我按照您的指示执行!你能不能帮我纠正我得到的 2 个错误。
在 .h 文件中
@interface Shared : NSObject{
@private
float input[7];
float output[6];
}
+(Shared*)sharedInstance;
-(void)addNewInput:(float)input1;
-(float *)input;
-(void)addNewOutput:(float)output1;
-(float *)output;
@end
在.m 文件中............
@implementation Shared
-(id)init{
if((self =[superinit])){
for(int n=0; n<7 ;++n)
input[n]=0.00f;
for(int n=0; n<6 ;++n)
output[n]=0.00f;
}
returnself;
}
-(void)addNewInput:(float)input1{
input[0]=input[1];
input[1]=input[2];
input[2]=input[3];
input[3]=input[4];
input[4]=input[5];
input[5]=input[6];
input[6]=input1;
}
-(float *)input {
returninput;
}
-(void)addNewOutput:(float)output1{
output[0]=output[1];
output[1]=output[2];
output[2]=output[3];
output[3]=output[4];
output[4]=output[5];
input[5]=output1;
}
-(float *)output {
returnoutput;
}
@end
调用时
float reading= (accel_reading)/(1.165969038*1e5f);
[[SharedsharedInstance] addNewInput:reading];
我遇到的问题 1. 在实现中,它说不完整的实现(这是警告而不是错误) 2. 我如何使用 for 循环来填充数组值或者这种方式可以吗?
我得到的主要问题,当我如上所示调用它时,由于未捕获的异常'NSInvalidArgumentException',程序停止运行并告诉终止应用程序,原因'+ [SharedsharedInstance]:无法识别的选择器发送到类0x5780'
请帮助我完成这个......