从String中获取字符串以调用方法

时间:2011-07-01 16:30:28

标签: objective-c c

我正在尝试从数组中调用一个字符串。但没有运气。它被传递给另一个班级。

MainClass.h
#import First
@class First;

@interface MainClass : UIViewController{
NSMutableArray *listArray;
}
///////////////////
MainClass.m

    First *first = [[First alloc] init];

    listArray = [[NSMutableArray alloc]init];
        [listArray addObject:@"first"];
        [listArray addObject:@"second"];

    int Aslot = 0;
    int sumA;
float level = 5, insample = 10;

    NSString *slotA =[listArray objectAtIndex:ASlot];

           sumA = [slotA out:insample andlevels:level];

/////////
First.h
-(float)out:(float)insample andlevels:(float)level;

First.m
-(float)out:(float)insample andlevels:(float)level{

float outsample = insample + 10 * level;

return outsample;
}

我希望slotA(Class)等于数组“first”或“second”中的字符串,因此它可以调用该方法。

我有一个表,当我首先选择时,它会将样本和其他参数发送到另一个类,然后处理它然后返回MainClass。

sumA = [first out:insample andlevels:level];

但我收到一条错误消息,说NSString可能无法响应我的参数:andlevels。请帮忙..

1 个答案:

答案 0 :(得分:1)

编辑:

如果我理解正确,您希望动态创建一个名称已存储为NSString的类的实例。你可以这样做:

int Aslot = 0;
int sumA;
float level = 5, insample = 10;

NSString *className = [listArray objectAtIndex:Aslot];
Class sampler = objc_getClass([className UTF8String]);
id instance = [[sampler alloc] init];
sumA = [instance out:insample andlevels:level];

// Do whatever you want with sumA here.

[instance release];

如果你这么做很多,你可能想要保留实例或将类存储在数组中而不是它们的名字,具体取决于你正在做什么。

相关问题