次の要件を達成する方法があるかどうかを知りたいです。
まず、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
ます。
これが私が考えることができる1つの可能なアプリケーションです:
プログラムでは、ユーザーはプログラムのアクションを指示する文字列を入力するように求められます。ただし、すべての文字を小文字に変換したり、すべての一重引用符を二重引用符に変換したり、欠落している右括弧や引用符をオートコンプリートしたりするなど、入力文字列を標準化する必要がある場合があります。ただし、ユーザーが標準化できないナンセンスを入力しているだけの場合は、プログラムを終了してユーザーに問題を警告する必要があります。(BOOL)isStandardizeable:(NSString *)input
2つの方法はとです(NSString *)standardize:(NSString *)input
。(NSString *)standardize
すでにを返しているのでNSString *
、別のを返すことはできませんBOOL
よね?したがって、次のコードは実現できません。
if(standardize:input){
NSString *result = standardize:input;
} else {
NSLog(@"unrecognizable input!");
return;
}
//continue...
誰かがこれを行う方法を考えることができますか?