根据用户输入命名新创建的实例

时间:2011-10-08 16:17:12

标签: objective-c macos cocoa

我有一个班级(让我们称之为foo.m)和我的主要barAppdelegate.m。在我的委托中,我想基于用户输入动态创建foo.m的实例(即,该实例的名称应该是用户输入的内容),我需要跟踪其中的大量内容。

3 个答案:

答案 0 :(得分:2)

最简单的解决方案是创建一个NSMutableDictionary来存储您创建的foo实例(这些是对象)并将名称设置为{{1}的关键字}。

答案 1 :(得分:2)

Objective-C绝对没有理由在运行时指定变量的名称。变量适合您,程序员(和编译器)。您需要稍微重新考虑一下您的计划。

您需要将Foo类的每个实例与用户输入的字符串相关联。因此,您应该为类提供一个实例变量来保存该字符串。当您创建对象时,将它们放入一个集合中 - 或者像PengOne建议的那样,一个字典,您可以通过提供的字符串再次访问它们,或者只是一个数组。

如果你真的认为你需要主要通过该字符串检索实例,那么字典是一个不错的选择。如果您只是偶尔需要以这种方式获取实例,请使用数组并查看indexOfObjectPassingTest:

NSUInteger idx = [myArray indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    if( [[obj name] isEqualToString:stringToTest] ){
        *stop = YES;
        return YES;
    }
}];

答案 2 :(得分:0)

ClassName myClass = NSClassFromString (@"classname");

ClassName *object = [[myClass alloc] init];