-2

如何使用相同的代码创建多个对象,但每个对象都有一个唯一的名称?

如果我在目标 C 中创建一个对象,例如:

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

我有一个名为 myObject 的对象,我可以引用它来执行以下操作:

[myObject setBackgroundColor:[UIColor blueColor]];

但是如果我想用相同的分配代码创建多个对象呢?例如,如果我在操作中使用此代码,那么每次点击按钮时都会创建一个新对象。然后我会有多个名为 myObject 的对象。因此,当我使用代码设置背景颜色时,它会将 myObject 的所有背景颜色变为蓝色。

如果创建的每个对象都有一个唯一的名称,这不会是一个问题,但是如何给使用相同代码创建的每个对象一个唯一的名称?

一种方法是在创建后重命名对象并附加一个数字增量,但是如何重命名对象?或者,也许我可以首先为每个创建的对象设置一个唯一的名称,但是如何为每个新对象的名称插入一个唯一的“字符串”?

谢谢阅读!

更新!!

我创建了一个“带有标签方法的初始化”,但每次创建新对象时,先前创建的对象也会收到新标签,因此每个对象都有相同的标签,而不是唯一的标签。有什么帮助吗?

初始化方法:

- (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

创建一个接受名称的初始化方法:

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 回答
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];
}

所以你有一个数组,里面有单独的对象。你可以遍历它。您甚至可以将初始背景颜色(当您点击按钮时)设置为基于用户选择的颜色。(在我的示例中,颜色始终为蓝色)

于 2012-09-09T09:20:54.633 回答