好的,我需要设置一个断点,该断点仅在特定对象和/或选择器调用(或未调用)方法时才“命中”
我能想到的最简单的方法是,如果有一些编译器宏(如 _cmd)展开堆栈并返回当前方法的直接调用者的 ID 和选择器。
例如,假设宏是 _cmd_caller_id 和 _cmd_caller_sel) -
if ( (_cmd_caller_id == self) && (_cmd_caller_sel != @selector(some_method:signature:) ) {
NSLog(@"called by %@ - hitting breakpoint",NSStringFromSelector(_cmd_caller_sel));
}
(你会在包含 NSLog(...); 的行上放置一个断点);
原因是我有一个被多次调用的方法,我需要能够设置比我上面描述的更复杂的条件集来设置陷阱以确定哪个方法正在调用有问题的方法,并且什么时候。
最佳答案
在调用站点设置断点,并在断点上设置条件(例如 self == whatever)
关于iphone - XCode/Objective C 基于调用者的条件断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775749/