-2

同じコードで複数のオブジェクトを作成する方法を教えてください。

目的の C でオブジェクトを作成すると、次のようになります。

MyClass *myObject = [[MyClass alloc] init];

次のようなことを行うために参照できる myObject という名前のオブジェクトがあります。

[myObject setBackgroundColor:[UIColor blueColor]];

しかし、同じ割り当てコードで複数のオブジェクトを作成したい場合はどうすればよいでしょうか? たとえば、アクションでこのコードを使用すると、ボタンがタップされるたびに新しいオブジェクトが作成されます。次に、myObject という名前の複数のオブジェクトを作成します。SO コードを使用して背景色を設定すると、myObject のすべての背景色が青に変わります。

作成された各オブジェクトに一意の名前が付けられている場合、これは問題になりませんが、同じコードで作成された各オブジェクトに一意の名前を付けるにはどうすればよいでしょうか?

1 つの方法は、作成後にオブジェクトの名前を変更し、番号の増分を付加することですが、オブジェクトの名前を変更するにはどうすればよいですか? または、最初に作成された各オブジェクトを一意の名前で設定することもできますが、新しいオブジェクトごとに一意の「文字列」を挿入するにはどうすればよいでしょうか?

読んでくれてありがとう!

アップデート!!

「init with tag メソッド」を作成しましたが、新しいオブジェクトを作成するたびに、以前に作成したオブジェクトも新しいタグを受け取るため、各オブジェクトには一意のタグではなく同じタグが付けられます。何か助けはありますか?

初期化方法:

- (id) initWithTag:(int) theTag
{
    self = [self init];
    if (self)
    {
        self.tag = theTag;
    }
    return self;
}

オブジェクト作成コード:

MyClass *myObject = [[MyClass alloc] initWithTag:tagCount];
tagCount ++;
4

2 に答える 2

1

ずっと前に同じリクエストがありました。

私はそれをそのようにすることを好みます:

@implementation testViewController {
    NSMutableArray *myarray;
}

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

- (void) buttonClickMethod {
    MyClass *myObject = [[MyClass alloc] init];
    [myObject setBackgroundColor:[UIColor blueColor]];
    [myarray addObject:myObject];
    [myObject release];
}

つまり、個別のオブジェクトを含む配列があります。あなたはそれを繰り返すことができます。ボタンをタップしたときの最初のbackgroundColorを、ユーザーの選択に基づいた色に設定することもできます。(私の例では、色は常に青になります)

于 2012-09-09T09:20:54.633 に答える
1

名前を受け入れる初期化メソッドを作成します。

MyClass *myObject = [[MyClass alloc] initWithName:@"Current Object Name"];

そしてinitWithName:コード:

- (id) initWithName:(NSString*) theName
{
    self = [super init];
    if (self)
    {
        self.name = theName;
    }
    return self;
}
于 2012-09-09T09:09:35.627 に答える