123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #import <Foundation/Foundation.h>
- #import <stdio.h>
- #import <sysexits.h>
- #ifdef DEBUG
- #define GTM_METHOD_CHECK(class, method) GTM_METHOD_CHECK_INNER(class, method, __LINE__)
- #define GTM_METHOD_CHECK_INNER(class, method, line) \
- GTM_METHOD_CHECK_INNER_INNER(class, method, line)
- #define GTM_METHOD_CHECK_INNER_INNER(class, method, line) \
- __attribute__ ((constructor, visibility("hidden"))) \
- static void xxGTMMethodCheckMethod ## class ## line () { \
- @autoreleasepool { \
- if (![class instancesRespondToSelector:@selector(method)] \
- && ![class respondsToSelector:@selector(method)]) { \
- fprintf(stderr, "%s:%d: error: We need method '%s' to be linked in for class '%s'\n", \
- __FILE__, line, #method, #class); \
- exit(EX_SOFTWARE); \
- } \
- } \
- }
- #else
- #define GTM_METHOD_CHECK(class, method)
- #endif
|