Условная точка останова XCode / Objective C, основанная на вызывающем абоненте - PullRequest
3 голосов
/ 15 октября 2011

Хорошо, у меня есть требование установить точку останова, которая получает "удар", только когда метод вызывается (или не вызывается) конкретным объектом и / или селектором

, самый простой способ, о котором я могу думатьэто происходит, если был какой-то макрос компилятора (например, _cmd), который разматывает стек и возвращает идентификатор и селектор непосредственного вызывающего объекта текущего метода.

, например, предполагая, что мажические макросы были _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 (...););

, потому что у меня есть метод, который вызывается много раз,мне нужно иметь возможность установить более сложный набор условий, чем я описал выше, чтобы установить ловушку для определения, какой метод вызывает вызывающий метод и когда.

1 Ответ

3 голосов
/ 15 октября 2011

Установите точку останова на вызывающем сайте с условием для точки останова (например, self == что угодно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...