我有一種情況,我想調用執行選擇器提供錯誤的目標上的方法:PerformSelector may cause a leak because its selector is unknown
。執行選擇器可能會導致泄漏解決方法快速崩潰
爲了避開這個我使用從this SO question優秀的解決方案:
if (self.target) {
IMP imp = [self.target methodForSelector:self.selector];
void (*func)(id, SEL, id) = (void *)imp;
func(self.target, self.selector, argument);
}
下面這段代碼是我使用的斯威夫特項目框架的一部分,它是導致飛機墜毀。
如果我忽略警告並使用[self.target performSelector:self.selector withObject:self.argument];
它工作正常。
所以... 我假設這是基本Swift與Objective-C消息發送體系結構。請有人告訴我a)發生了什麼事? b)如何繞過它。
在雨燕2.0你可以直接調用'performSelector'。 – matt
該框架僅在Objective-C中。 swift是利用這個框架的項目。 –
好吧,我想我已經回答了這個問題,因爲你回答了這些問題。你有一個可行的方法,所以我現在甚至都沒有看到這個問題到底是什麼。 – matt