0

Xcode と iOS のプログラミングは初めてです。私はこのチュートリアルに従っています: http://www.thetutorialblog.com/cocoa-objective-c/creating-a-basic-ipad-application/

1 つの「- ボタン」、1 つのラベル、および 1 つの「+ ボタン」で動作するようになりました。しかし、私はそれらの複数が欲しいので、チュートリアルコードを追加して、次のようにコピーしました:

IBOutlet UILabel *currentNumber2;

-(IBAction)incrementNumber2:(id)sender2;
-(IBAction)decrementNumber2:(id)sender2;


-(IBAction)incrementNumber2:(id)sender2 {
    number++;
    [currentNumber2 setText:[NSString stringWithFormat:@"%d", number]];
}


-(IBAction)decrementNumber2:(id)sender2 {
    number--;
    [currentNumber2 setText:[NSString stringWithFormat:@"%d", number]];
}

しかし、最初の + ボタンを押すと、最初のラベルで +1 カウントアップし、次に 2 番目の + ボタンを押すと、label2 の最初のボタンからカウントし続けるので、2 を入れます。

4

1 に答える 1

0

これは、オブジェクト指向プログラミングの典型的な動作です。その単一のインスタンスはnumber、そのオブジェクトのすべてのメソッド呼び出しで共有されます。複数のインスタンスをサポートするnumber場合は、2 つの選択肢があります。インスタンス変数をクラスに追加し、インスタンスを作成するときにコードをどんどん追加していくか、単にクラスの新しいインスタンスを生成するかです。

非常に迅速に価値ある認識を行うことに注意してください:モデル化されたドメインは、アプリケーション ドメインとは異なるオブジェクト要件を持つ場合があります (つまり、「しかし、私のUIViewController!! のインスタンスをこれ以上作成する必要はありません」と言う必要があります。右)。これは、iOSが深くサポートするアーキテクチャである Model-View-Controllerへの第一歩です。この場合、あなたのモデルnumberはコントローラーから分離されるべきであり、コントローラーはそれらの任意の量を処理できる必要があります (たまたま ivar を作成した数だけではありません)。

それは良い道です:-)

于 2012-08-31T07:08:39.647 に答える