プログラムの実行中に更新できる2つのグローバル配列を作成したかったのです。更新のたびに、1つの要素をゼロの位置に追加し、配列を作成した最後の番号を削除しました。 ....... //////////////
@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];
その間に、私はこれらの値を呼び出し、式を使用して算術値を計算します。
これはうまくいくようです。しかし、私が格納している浮動小数点数を処理するのは非効率的な方法のようです。これらの配列はオブジェクトを作成します。指定された量の浮動小数点数を含むグローバル配列を作成し、programm(配列サイズは固定)の実行中に最後のオブジェクトを削除して更新し、それらを呼び出して計算を行う簡単な方法はありますか?
私を助けてください!
編集1deanWombourne卿へ.................................あなたの指示通りに実装します!これを確認して、発生した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に送信されたためにアプリケーションを終了します
これを通して私を助けてください...............