0

ヘッダーに記載されているivarがあります

@interface MyClass : UIView{
    int thistone;}
- (IBAction)toneButton:(UIButton *)sender;
@property int thistone;
@end

実装で合成しました:

@implementation MyClass
@synthesize thistone;
- (IBAction)toneButton:(UIButton *)sender {
if(thistone<4)
    {thistone=1000;}   // I hate this line.
    else{thistone=thistone+1; }  
}

ゼロ以外の初期値を設定する方法が見つかりません (またはマニュアルで見つかりません)。1000 から開始して、ボタンを押すたびに 1 ずつ増やしていきます。コードは私が意図したとおりに動作しますが、上記の if/else ステートメントを節約できる、より適切な方法があると思います。コードの修正またはオンライン ドキュメントの特定の行へのポインタは大歓迎です。

4

1 に答える 1

1

initすべてのオブジェクトには、インスタンス化時に呼び出されるメソッドのバリアントがあります。このようなセットアップを行うには、このメソッドを実装します。特に UIView には と がinitWithFrame:ありinitWithCoderます。すべてをオーバーライドし、別のメソッドを呼び出して必要なセットアップを実行することをお勧めします。

例えば:

- (void)commonSetup
{
    thisTone = 1000;
}


- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        [self commonSetup];
    }

    return self;
}


- (id)initWithCoder:(NSCoder *)coder
{
    if (self = [super initWithCoder:coder])
    {
        [self commonSetup];
    }

    return self;
}
于 2012-09-28T02:06:06.663 に答える