性能選擇器可能會導致泄漏,因為它的選擇器是未知的。ARC編譯器警告我如下:"performSelector may cause a leak because its selector is unknown".我要做的是:[_controller performSelector:NSSelectorFromString(@"someMethod")];為什么我會收到這樣的警告?我知道編譯器不能檢查選擇器是否存在,但是為什么會導致泄漏呢?我怎樣才能更改我的代碼,使我不再收到這個警告呢?
3 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
#pragma clang diagnostic push#pragma clang diagnostic ignored "-Warc-performSelector-leaks" [self.ticketTarget performSelector: self.ticketAction withObject: self];#pragma clang diagnostic pop
#define SuppressPerformSelectorLeakWarning(Stuff) \ do { \ _Pragma("clang diagnostic push") \ _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \ Stuff; \ _Pragma("clang diagnostic pop") \ } while (0)
SuppressPerformSelectorLeakWarning( [_target performSelector:_action withObject:self]);
id result;SuppressPerformSelectorLeakWarning( result = [_target performSelector:_action withObject:self]);

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
- 3 回答
- 0 關注
- 395 瀏覽
添加回答
舉報
0/150
提交
取消