在objective-c中有一种动态创建变量名的方法。就像我将一个字符串传递给一个方法,并且该方法创建一个NSString,其名称是传入的字符串。像
这样的东西-(void)create:(NSString *)str{
NSString *[NSString stringWithFormat:@"%@", str];
}
或者也许有办法改变现有的变量名称。
NSString *password;
password.name = entryPassword;
答案 0 :(得分:6)
我确信有人会指出一些晦涩的异常,但总的来说,这在任何编译语言中都是不可能的。
答案 1 :(得分:2)
我会调查NSMutableArray。
NSMutableArray的大小可以更改,所有对象都保留在其中。
因此,您可以将本地创建的字符串存储在NSMutableArray
中,稍后再访问该字符串。
所以你可以拥有一个类型为NSMutableArray
的ivar mutableArray,然后你可以存储本地创建的字符串:
//In your init method
mutableArray = [[NSMutableArray alloc] init];
//In your create method:
[mutableArray addObject: [NSString initWithString:str]];
这并不是你所说的,但它可能是你最接近的。 (或者我误解了你的问题)。
答案 2 :(得分:2)
在C#(也是编译语言)中,它被称为反射:http://msdn.microsoft.com/en-us/library/ms173183.aspx,根据定义,您可以“动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型”并调用其方法或访问其字段和属性。“
我不明白为什么人们会问“为什么要做他们想做的事”而不是简单地回答这个问题。
答案 3 :(得分:2)
几个星期前我提出了这个问题并用最大数量的点(mmc)作为事实对待答案,但是在至少1个上下文中你可以在Objective C中动态“创建”变量名称即可。
我的老师,Jacek Lampart向我展示了如何以及我认为我会与其他新手分享。
肉:
// Sample for loop
for(int i=1; i<=3; i++)
{
// Here you define the format of variable.
// In this example it’s gonna be blablabla1, blablabla2, blablabla3.
NSString *targetVariableName = [NSString stringWithFormat:@"blablabla%d", i];
// Sample UIImageView variable.
// You assign self.blablabla1 (self.blablabla2 and so on)
// to currentVariable in a way, which enables you to work
// with this object (for example setImage to it etc.).
UIImageView *currentVariable = [self valueForKey:targetVariableName];
// […]
// Profit & DRY power!
}