gpt4 book ai didi

objective-c - Obj C - 有没有办法让方法返回调用它的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:36 25 4
gpt4 key购买 nike

我想知道是否有办法实现如下需求:

首先,有一个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)inputmethodA:(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...

谁能想出办法做到这一点?

最佳答案

实际上,如果输入无效,我只会让methodA 返回nil。这是向调用者发出失败信号的一种相当常见的方法。如果您真的需要该方法的“身份”部分,只需让调用者执行即可

id res = [... methodA:input];
if(res == nil)
res = input;

关于objective-c - Obj C - 有没有办法让方法返回调用它的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15261658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com