Использование макроса 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 Дерек Селандер. Все права защищены. //