我想写一个简单的方法声明格式化程序,我需要验证字符串是否实际上是一个客观的c方法声明。检查一个字符串是否是一个客观的c方法声明
是否有某种构建功能来做到这一点,或者可能是正则表达式命令来验证这样的事情,还是我需要实现我自己的解析器的这种情况?
现在我已经修整了空白字符串并将其转换为小写字母,因此使用for循环更容易验证。例如,在下面的代码中,我可以检查子字符串“(void)”是否发生,以确定它是一个无效函数,但是这并不能完成这项工作。一定会有更好的办法。
-(BOOL)isVoidMethod:(NSString*)method
{
/* Remove white spaces and lower case the method */
[self convertToParseMethod:method];
BOOL isVoid = NO;
if ([method rangeOfString:@"(void)"].location != NSNotFound) {
isVoid = YES;
} else if ([method rangeOfString:@"(ibaction)"].location != NSNotFound) {
isVoid = YES;
}
return isVoid;
}
感谢提前:)
你不能这样做,因为返回类型不是必需的(隐式默认为'id'),因此:'-doSomething:(id)argument'是一个完全有效的方法签名。尽管如此,你只能在真正古老的目标中看到它。 –
也可以看作'IBAction'是一个转换为'void'的宏,对于任何预处理文件,你都不应该有这个问题。你真的应该退后一步,准确地分析你想做什么,为什么编译器不能为你工作? –
我会通过用execl调用llvm来做到这一点。 –