Ios &引用;返回&引用;堆栈跟踪中的父方法
在objective-c(运行linux)中,假设我有一个方法-a调用方法-B,在方法-B中我调用Ios &引用;返回&引用;堆栈跟踪中的父方法,ios,objective-c,linux,multithreading,methods,Ios,Objective C,Linux,Multithreading,Methods,在objective-c(运行linux)中,假设我有一个方法-a调用方法-B,在方法-B中我调用return a { //stuff [self b]; //stuff } b { //stuff return; //stuff } 当我在方法B中调用return时,它仍将完成方法“A”(父方法)的其余部分。但是如果我还需要返回调用方法B的方法(父方法,方法-A),该怎么办呢 Objective-C是否有超回报或returnAll类型函数?现
return代码>
a {
//stuff
[self b];
//stuff
}
b {
//stuff
return;
//stuff
}
当我在方法B中调用return
时,它仍将完成方法“A”(父方法)的其余部分。但是如果我还需要返回调用方法B的方法(父方法,方法-A),该怎么办呢
Objective-C是否有超回报代码>或returnAll代码>类型函数?现在我只是设置bool,在方法A内部调用完方法B后检查bool
我假设有某种方法可以直接使用linux命令访问堆栈跟踪并返回所有。可能一些线程命令也只是为了返回而存在编码>删除当前线程。阻止解决方案
如果没有内置的superReturn,块可能是一种很好的方法,可以根据需要控制此流,而不会产生负面影响代码>存在
-(void)viewDidLoad {
[self methodA];
}
-(void)methodA {
NSLog(@"1");
NSLog(@"2");
__block BOOL superReturn;
[self methodB:^(NSNumber * _Nullable shouldSuperReturn) {
if (shouldSuperReturn) {
superReturn = [shouldSuperReturn boolValue];
}
}];
if (superReturn) {
return;
}
NSLog(@"3");
NSLog(@"4");
}
-(void)methodB:(void(^)(NSNumber * _Nullable shouldSuperReturn))superReturn; {
NSLog(@"a");
NSLog(@"b");
superReturn(@(YES));
return;
NSLog(@"c");
NSLog(@"d");
}
//Logs 1,2,a,b.
注意:带NSNumber类型的可空标志是可选的。这可以通过BOOL来实现,因为无法通过块传回值将导致无论如何都是NO。块解决方案
如果没有内置的superReturn,块可能是一种很好的方法,可以根据需要控制此流,而不会产生负面影响代码>存在
-(void)viewDidLoad {
[self methodA];
}
-(void)methodA {
NSLog(@"1");
NSLog(@"2");
__block BOOL superReturn;
[self methodB:^(NSNumber * _Nullable shouldSuperReturn) {
if (shouldSuperReturn) {
superReturn = [shouldSuperReturn boolValue];
}
}];
if (superReturn) {
return;
}
NSLog(@"3");
NSLog(@"4");
}
-(void)methodB:(void(^)(NSNumber * _Nullable shouldSuperReturn))superReturn; {
NSLog(@"a");
NSLog(@"b");
superReturn(@(YES));
return;
NSLog(@"c");
NSLog(@"d");
}
//Logs 1,2,a,b.
注意:带NSNumber类型的可空标志是可选的。这可以通过BOOL来实现,因为无法通过块传回值将导致无论如何都是否定的。好吧,我要说“不,你不能。”我还要说“不,你不应该”。这意味着。。。如果你真的真的想。。。搜索使用流控制异常并了解为什么这是个坏主意:)我不明白为什么使用返回
是个好主意,但对父方法执行相同的操作将是个坏主意。我也会调查的,谢谢!我同意DonMag的观点,做这种流量控制(从两种方法返回)通常是个坏主意。如果你找不到另一种方法来解决这个问题,我建议你详细说明你为什么想要这样的事情。方法A的作用是什么?方法B的作用是什么?您试图实现的总体需求是什么?因为“superReturn”看起来很像一个XY问题。方法B规定在其他可能调用它的方法中应该发生什么是一个非常糟糕的主意。如果你用一个更具体的例子来更新你的问题,说明你正在努力完成什么,可能会有所帮助。可能有一个合适的解决方案,但您的问题过于集中在具体的解决方案上,而不是集中在更一般的问题上。请参阅。@rmaddy对于我的一个特定示例,我已经有了一个实用的解决方案,如果我想返回第二个方法或不想返回第二个方法,我只返回一个BOOL。我只是想知道这样一个超级返回命令是否存在。好吧,我要说“不,你不能。”我还要说“不,你不应该。”这意味着。。。如果你真的真的想。。。搜索使用流控制异常并了解为什么这是个坏主意:)我不明白为什么使用返回
是个好主意,但对父方法执行相同的操作将是个坏主意。我也会调查的,谢谢!我同意DonMag的观点,做这种流量控制(从两种方法返回)通常是个坏主意。如果你找不到另一种方法来解决这个问题,我建议你详细说明你为什么想要这样的事情。方法A的作用是什么?方法B的作用是什么?您试图实现的总体需求是什么?因为“superReturn”看起来很像一个XY问题。方法B规定在其他可能调用它的方法中应该发生什么是一个非常糟糕的主意。如果你用一个更具体的例子来更新你的问题,说明你正在努力完成什么,可能会有所帮助。可能有一个合适的解决方案,但您的问题过于集中在具体的解决方案上,而不是集中在更一般的问题上。请参阅。@rmaddy对于我的一个特定示例,我已经有了一个实用的解决方案,如果我想返回第二个方法或不想返回第二个方法,我只返回一个BOOL。我只是想知道这样一个超级返回命令是否存在。