从NSString引用类实例

时间:2012-06-02 08:22:21

标签: objective-c object nsstring instance-variables

我有以下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 个答案:

答案 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支持的东西,我认为与上述相比,它更容易阅读。