我有以下NSUrl对象:
NSURL * urlImage1 = [[NSURL alloc]initWithString:url1];
NSURL * urlImage2 = [[NSURL alloc]initWithString:url2];
NSURL * urlImage3 = [[NSURL alloc]initWithString:url3];
NSURL * urlImage4 = [[NSURL alloc]initWithString:url4];
NSURL * urlImage5 = [[NSURL alloc]initWithString:url5];
以及将NSUrl指针作为参数的以下方法:
-(void)loadImageInBackground:(NSURL *)urlImage
现在。如果我有一个像@“urlImage1”的字符串,我如何将它作为参数传递给loadImageInBackground:? 除了在NSArray中推送所有东西之外还有什么呢?我很好奇。
由于 卢卡
答案 0 :(得分:0)
您可以将所有NSURL对象存储在字典中,并将字符串用作键。
答案 1 :(得分:0)
除了调试符号(通常从可执行文件中删除)之外,Objective-C(与许多编译语言一样)不会在编译的程序中保留局部变量的名称。根本无法通过名称引用变量,因为变量不再具有名称。它只是记忆中的一个地址。
答案 2 :(得分:0)
如果您的网址是对象属性,则可以使它们符合KVC
制作符合KVC的课程
NSKeyValueCoding非正式协议使KVC成为可能。它的两个方法 - valueForKey:
和setValue:forKey:
- 特别重要,因为它们在给出其键时获取并设置属性的值。 NSObject提供了这些方法的默认实现,如果一个类符合键值编码,它可以依赖于这个实现。
答案 3 :(得分:0)
我没有看到推送数组中的所有元素有什么问题?模式url1,url2,url3 ......几乎要求集合类型数据结构。您当然也可以使用另一种类似NSSet的集合类型。
NSSet *set = [NSSet setWithObjects:@"url1", @"url2", @"url3", @"url4", @"url5", nil];
set enumerateObjectsUsingBlock:^(id obj, BOOL *stop) [{
NSURL *url = [[NSURL alloc]initWithString:obj];
[yourLoader loadImageInBackground:url];
}];
如果您正在寻找类似的东西(伪代码):
this.myIVar = ""
s="myIVar"
this[s]="lolz"
trace(this.myIVar) //Expected: lolz
我不认为这是Objective-C支持的东西,我认为与上述相比,它更容易阅读。