我想知道是否有達到以下要求的方式:Obj C - 有沒有辦法讓一個方法返回它被調用的方法?
首先,有一個methodA
,這需要輸入objA
,並檢查objA
是否是有效的方法。如果它是有效的,那麼它返回一個對象objB
。但是,如果objA
無效,則它自己僅返回objA
。請注意,即使objA
有效,返回的objB
仍可能與objB
相同。
然後,有一個methodB
和在method
,methodA
被調用。如果methodA
的輸入有效,程序將繼續運行而不出錯。但是,如果methodA
被稱爲無效輸入,則methodB
應該終止(也就是返回一個指定錯誤的字符串)以防止未來崩潰。
,我能想到的,目前的解決方案是創建一個(BOOL)methodAInputIsValid:(obj)input
和methodB
有:
if(methodAInputIsValid:input) {
obj objReturn = methodA:input;
}else{
//show error warning
return;
}
//continue doing something with objReturn and finally return some valid thing
代碼的一個問題是,(BOOL)methodAInputIsValid:(obj)input
和methodA:(obj)input
份額,在很多共同點的代碼,因爲有methodA
的有效性測試。所以我想更有效地使用有效性測試,以便它可以用於methodB
並刪除(BOOL)methodAInputIsValid
。
這裏是我能想到的一個可能的應用:
在程序中,用戶被要求輸入一個字符串,將引導程序的作用。但是,輸入字符串可能需要標準化,例如將所有字母轉換爲小寫字母,並將所有單引號轉換爲雙引號,並自動填寫缺失的右括號或引號。但是,如果用戶只是輸入無法標準化的廢話,那麼程序應該終止並警告用戶這個問題。這兩種方法是(BOOL)isStandardizeable:(NSString *)input
和(NSString *)standardize:(NSString *)input
。因爲(NSString *)standardize
已經返回NSString *
,我不能讓它返回另一個BOOL
,對吧?所以下面的代碼是不可能實現的:
if(standardize:input){
NSString *result = standardize:input;
} else {
NSLog(@"unrecognizable input!");
return;
}
//continue...
任何人都可以想辦法做到這一點?