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)
唯一的问题是我得到'可能导致泄密'的消息 - 尽管该应用运行正常.
欢迎来到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)
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |