编译项目的时候常常无法完全清理各种告警信息,心里超级不爽,目标0 warning...
处理宏定义
//
// 去除 “selector未知 可能导致内存泄露的告警”
// @"PerformSelector may cause a leak because its selector is unknown"
//
#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
Stuff; \
_Pragma("clang diagnostic pop") \
} while (0)
//
// 去掉Deprecated函数调用的告警
// 'UISearchDisplayController' is deprecated: first deprecated in iOS 8.0 - UISearchDisplayController has been replaced with UISearchController
//
#define SuppressDeprecatedDeclarations(Stuff) \
do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
Stuff() \
_Pragma("clang diagnostic pop") \
} while(0)
测试示例:
// 1
UISearchBar *searchBar;
UISearchDisplayController *s = [[UISearchDisplayController alloc] initWithSearchBar:searchBar
contentsController:self];
// 2
[self performSelector:NSSelectorFromString(@"someMethod")];
取自各种开源库及网络,不断整理中....