使用NSString调用XCode 4.x中的函数

Mar*_*ham 1 objective-c xcode4.5

我确定这是一个简单的问题,但我如何用[self MyFunction]调用函数; 'MyFunction'在哪里是NSString?我想使用各种变量调用函数,这些变量在连接时形成函数名称(即FunctionName1,FunctionName2等)

例如(简化):

NSString *MyStringValue=@"FunctionName";
int MyNumber = 1;
NSString *MyFunction=[myStringValue stringByAppendingFormat:@"%d ",myNumber];
Run Code Online (Sandbox Code Playgroud)

所以我想使用以下方法调用函数"FunctionName1":

[self MyFunction];
Run Code Online (Sandbox Code Playgroud)

但这不起作用.有人可以帮忙吗?


编辑:这是现在有效的完整代码:

-(void)getnewblock {

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    NSNumber *actionblockload = nil;
    actionblockload = [standardUserDefaults objectForKey:@"actionblock"];
    int actionblock = [actionblockload intValue];

    NSString *block=@"setblock";
    NSString *blockanimate=@"blockanimate";

    NSString *blocktochange=[block stringByAppendingFormat:@"%d",actionblock];
    NSString *blocktoanimate=[blockanimate stringByAppendingFormat:@"%d",actionblock];

    SEL sel1 = NSSelectorFromString(blocktochange);
    SEL sel2 = NSSelectorFromString(blocktoanimate);

    [self performSelector:sel1];
    [self performSelector:sel2];

    [self setblockimages];
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我得到'可能导致泄密'的消息 - 尽管该应用运行正常.

Val*_*adu 6

欢迎来到Stackoverflow Mark.

在Cocoa Touch中,你所谓的"函数"被称为"选择器"(一种同时具有签名和目标的方法)并且具有自己的类型SEL.为了实现您想要的功能,您需要首先按名称获取选择器然后执行它.以下是一些可以帮助您入门的代码:

-(void) yourMainMethod{

   NSString * methodName = @"calculateAcceleration";
   SEL sel = NSSelectorFromString(methodName);

   [self performSelector:sel];

}

-(void)calculateAcceleration
{
   NSLog(@"Called!");
}
Run Code Online (Sandbox Code Playgroud)