-1

是否可以动态地创建一个类的实例,并赋予它们特定的名称(例如 Friend1、Friend2 等)?

我有一个带有一些实例变量(例如姓名和姓氏)的“朋友”类。在我的应用程序中,用户从列表中选择他想要添加的“朋友”数量。因此,如果他选择 5,UITableView 将填充 10 个空字段(姓名和姓氏)。

您知道“即时”创建这些对象的任何方法吗?

4

2 回答 2

0

好了,你的问题解决了,好!但是您的问题还解决了一个尚未解决的问题:“动态创建一个类的实例,为它们赋予特定的名称”,以便您以后可以使用这些名称来引用它们。
引用一个对象本质上意味着向它发送消息。在 Objective-C 运行时,这是使用objc_msgSend(id theReceiver, SEL theSelector, ...). 因此,您需要一个指向theReceiver. 我将您的问题解释为“是否可以将指向新实例的指针与动态创建的名称相关联。我认为这可以使用像这样的字典:
您动态创建您的标识符:NSString *myIdentifier = @"anyString";或任何其他创建字符串的方式。然后你创建你的类的一个实例:MyClass *myObject = [[MyClass alloc] init];或任何其他方式来实例化它。最终建立关联:NSDictionary *dict = @{myIdentifier: myObject};
稍后您可以向对象发送消息,使用对象的名称为[[dict objectForKey:myIdentifier] message];
也许有更简单的方法来做到这一点......

于 2013-05-06T19:08:53.450 回答
0

当他选择 5 时,创建一个朋友数组:

friends = [[NSMutableArray alloc] init];
for (int i = 0; i < 5; i++)
    [friends addObject:[[[Friend alloc] init] autorelease]];
[tableView reload];

(其中friendsNSMutableArray 在视图控制器的接口部分中声明)

在 UITableViewDataSource 中:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == friendsSection)
        return [friends count] * 2;
    else ...;
}

我将-tableView:cellForRowAtIndexPath:实现作为练习留给读者,这取决于您没有描述的太多细节。

于 2013-05-06T18:33:45.423 回答