2012-04-11 16 views
1

私は最初のアプリを作っていて、すでにアンドロイドで作っています。今はiphoneで作ろうとしていますが、客観的なC経験はありません。アプリは1つの部分(配列)を除いて非常に単純です。ユニバーサルアレイを客観的なC言語で

アプリにはボタンがあります。このボタンを押すと、情報を配列に格納する必要があります。私が実行している問題は、ボタンクリックアクションが発生するメソッドで配列を作成すると、ボタンをクリックするたびに新しい配列が作成され、配列のポイントが破棄されるということです。メソッドの外に配列を作ると、メソッドに渡されないか(エラーは未定義です)、オブジェクトを.hファイルに宣言するとプログラムがコンパイルされますが、ボタンを押すとクラッシュします。

ご協力いただければ幸いです。例は素晴らしいかもしれませんが、誰かが私を見上げるための正しい方向に向けることができても、それは私が大げさにならないようにしてくれます。 あなたの.hファイルでインタフェース宣言の中括弧セクション内のインスタンス変数(AKA「IVAR」)としてあなたの配列を宣言し

+0

私はあなたが 'NSMutableArray'を探していると思うが、私は、私は非常によくあなたの質問を理解していなかったのでわかりません。あなたは何をしようとしているのかを明確にして、あなたがしたことを示すコードを投稿できますか? – Saphrosit

+2

いくつかのコードを投稿してください。 –

+0

あなたはどの言語を知っていますか?値の受け渡しは、C/C++とほぼ同じです。オブジェクトが面白い形をしており、呼び出しが配列インデックス操作のように見えるだけです。 –

答えて

3

(これはARCではない)、このような何かを試してみてください -

@interface MyViewController : UIViewController { 

    NSMutableArray *myArray; 

} 


@implementation MyViewController 

-(id)init { 

    self = [super init]; 

    if (self) { 

     myArray = [[NSMutableArray alloc] init]; 

    } 

    return self; 

} 


-(void)dealloc { 

    [myArray release]; 

    [super dealloc]; 

} 


-(IBAction)buttonPressed { 

    [myArray addObject:someObject]; 

} 

@end 
2

あなたが必要とする、ともはあなたの指定イニシャライザでそれを初期化します。

.hファイルで

:今、あなたはすべてのインスタンスメソッドクラスのmyArrayを使用することができます

-(id)init { 
    self = [super init]; 
    if (self) { 
     myArray = [NSMutableArray array]; 
    } 
    return self; 
} 

:.mファイルで

@interface MyClass : NSObject { 
    NSMutableArray *myArray 
} 
// methods 
@end 

EDIT:このサンプルでは、​​自動参照カウントを使用していることを前提としています。これはあなたの最初のアプリなので、ARCを使うのは良い考えです(新しいプロジェクトを作成するときにXCodeを使用するかどうか尋ねられます)。

+0

この例はARCであることを指定する必要があります。 OPはヘッダーで宣言された配列を使用しているときにアプリケーションがクラッシュしたため、ARCを使用していない可能性があります(インターフェイスで正しく定義されていると仮定します)。 – Joe

+0

@ジョーあなたが正しいです、私はそれがARCだと思っています。なぜなら、「私の最初のアプリを作っています」という理由のために、ポストの一部ですが、100%の確実性はありません。ありがとう! – dasblinkenlight

+0

@dasblinkenlight申し訳ありません、あなたの答えを複製しました。 – SomaMan