2

我了解了下面的一段代码,它声称可以在一定程度上防止Method Swizzling 。

#ifndef DEBUG
SEC_IS_BEING_DEBUGGED_RETURN_NIL();
#endif

但是,在我的项目中进行测试时,我得到了一个错误。

函数“SEC_IS_BEING_DEBUGGED_RETURN_NIL”的隐式声明在 C99 中无效

如果我需要包含任何库头文件,有人可以帮我解决这个错误。

4

1 回答 1

6

我不打算回答我自己的问题。从上面的评论中,我搜索了任何这样的实现。并在 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

归功于此的制造商

// 由 Derek Selander 在快乐的一天创建。//
// 版权所有 (c)
// 2013 Derek Selander。版权所有。//

于 2015-02-12T14:55:47.617 回答