我想寫一個簡單的方法聲明格式化程序,我需要驗證字符串是否實際上是一個客觀的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來做到這一點。 –