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

时间:2012-09-09 09:06:06

标签: iphone objective-c xcode object namespaces

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

如果我在目标C中创建一个像:

的对象
MyClass *myObject = [[MyClass alloc] init];

我有一个名为myObject的对象,我可以引用它来做类似的事情:

[myObject setBackgroundColor:[UIColor blueColor]];

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

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

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

感谢阅读!

UPDATE !!

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

init方法:

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

对象创建代码:

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

2 个答案:

答案 0 :(得分:1)

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

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

initWithName:代码:

- (id) initWithName:(NSString*) theName
{
    self = [super init];
    if (self)
    {
        self.name = theName;
    }
    return self;
}

答案 1 :(得分: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(当您点按按钮时)设置为基于用户选择的颜色。 (在我的例子中,颜色总是蓝色)