Использование макроса SEC_IS_BEING_DEBUGGED_RETURN_NIL в приложении iOS

Я узнал о следующем фрагменте кода, который, как утверждается, в некоторой степени предотвращает метод Swizzling.

#ifndef DEBUG
SEC_IS_BEING_DEBUGGED_RETURN_NIL();
#endif

Но при включении в мой проект для тестирования я получаю ошибку.

Неявное объявление функции 'SEC_IS_BEING_DEBUGGED_RETURN_NIL' недопустимо в C99

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

1 ответ

Решение

Я не собирался отвечать на свой вопрос. Из комментария выше, я сделал поиск любой такой реализации. И нашел это в проекте GitHub. Который является категорией NSObject

Возможно, это поможет любому future,

#define SEC_IS_BEING_DEBUGGED_RETURN_NIL()  size_t size = sizeof(struct kinfo_proc); \
                                            struct kinfo_proc info; \
                                            int ret, name[4]; \
                                            memset(&info, 0, sizeof(struct kinfo_proc)); \
                                            name[0] = CTL_KERN; \
                                            name[1] = KERN_PROC; \
                                            name[2] = KERN_PROC_PID; \
                                            name[3] = getpid(); \
                                            if ((ret = (sysctl(name, 4, &info, &size, NULL, 0)))) { \
                                            if (ret) return nil; \
                                            } \
                                            if (info.kp_proc.p_flag & P_TRACED) return nil

Кредиты создателю этого

// Создано Дереком Селандером в счастливый день. //
// Copyright (c)
// 2013 Дерек Селандер. Все права защищены. //

Другие вопросы по тегам