Objective c 目标C:是否可能看到完整的错误路径?

Objective c 目标C:是否可能看到完整的错误路径?,objective-c,error-handling,Objective C,Error Handling,如何知道完整的错误堆栈 我想知道,如果可能的话,看到调用的函数的完整堆栈 我有一个函数的层次结构,它的层次结构是“一般”->“非常专业” 假设我有5层的层次结构 每个函数都有完成错误块,定义如下: typedef (^ErrorBlock)(NSError*error) FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock; 层次结构中的每个函数都有相同的代码部分: onError(NSEr

如何知道完整的错误堆栈

我想知道,如果可能的话,看到调用的函数的完整堆栈

我有一个函数的层次结构,它的层次结构是“一般”->“非常专业”

假设我有5层的层次结构

每个函数都有完成错误块,定义如下:

typedef (^ErrorBlock)(NSError*error)

FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock;
层次结构中的每个函数都有相同的代码部分:

onError(NSError*error){
    ErrorBlock(error);
}
所以,如果我从高级别(假设n)调用函数,它将从(n-1)级别调用函数,以此类推

如果1-level中的函数出现错误,它将被回调到调用它的非常高级的函数(非常专用)

是否可以知道此呼叫的完整路径?(或者一些技巧)

我希望有完整的函数调用跟踪,因此,我需要添加如下内容:

    onError(NSError*error){
       NSString*errorDescription = [self getNameOfFunction];
       NSMutableDictionary * errorDictionary = [NSMutableDictionary dictionary];
       NSString*previousErrorDescription = [error description];

       [errorDictionary setValue:[NSString stringWithFormat:@"%@ >> %@",previousErrorDescription,errorDescription ] forKey:NSLocalizedDescriptionKey];
            NSError * errorNew = [NSError errorWithDomain:vkDomain
                                                  code:errorCode
                                              userInfo:errorDictionary
                               ];
        ErrorBlock(errorNew);
    }
也许你需要:

NSLog(@"%@",[NSThread callStackSymbols]);

太酷了!我不知道有一个简单的Objective-C调用,直到现在,当我想查看调用堆栈时,我一直在玩弄
backtrace()
C调用……我能知道它主体中函数的全名吗?像
[self-nameOfCurrentFunction]
@loldop一样,如果需要上下文的方法名,可能应该尝试
NSStringFromSelector(_cmd)