如何使用相同的代码创建多个对象,但每个对象都具有唯一的名称?
如果我在目标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 ++;
答案 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(当您点按按钮时)设置为基于用户选择的颜色。 (在我的例子中,颜色总是蓝色)