第一种解决办法:
As a workaround until the compiler allows overriding the warning, you can use the runtime
objc_msgSend(_controller, NSSelectorFromString(@"someMethod"));
instead of
[_controller performSelector:NSSelectorFromString(@"someMethod")];
You'll have to
#import <objc/message.h>
第二种:
To ignore the error only in the file with the perform selector, add a #pragma as follows:
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
第三种:
#define SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING(code) \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
code; \
_Pragma("clang diagnostic pop") \
SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING(
return [_target performSelector:_action withObject:self]
);
本文介绍了三种解决Objective-C自动引用计数(ARC)环境下使用performSelector可能产生的内存泄漏警告的方法。第一种方法利用了运行时函数objc_msgSend替代performSelector;第二种方法通过预编译指令忽略特定文件中的警告;第三种方法则通过宏定义来实现选择性地忽略警告。

2848

被折叠的 条评论
为什么被折叠?



