0

我有以下 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 之外,还有什么?我很好奇。

谢谢卢卡

4

4 回答 4

0

除了调试符号(通常从可执行文件中删除)之外,Objective-C(像许多编译语言一样)不会在编译程序中保留局部变量的名称。根本无法通过名称来引用变量,因为变量不再有名称。它只是内存中的一个地址。

于 2012-06-02T08:47:51.470 回答
0

如果您的 url 是对象属性,您可以使它们符合 KVC

使类 KVC 兼容

NSKeyValueCoding 非正式协议使 KVC 成为可能。它的两个方法 -valueForKey:setValue:forKey:- 特别重要,因为它们在给定键时获取和设置属性的值。NSObject 提供了这些方法的默认实现,如果一个类符合键值编码,它可以依赖这个实现。

于 2012-06-02T08:49:23.690 回答
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 支持的东西,也不认为它比上面的更容易阅读。

于 2012-06-02T08:52:00.197 回答
0

您可以将所有 NSURL 对象存储在字典中,并将字符串用作键。

于 2012-06-02T08:27:01.923 回答