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