我有一個雨燕類,如下呼籲class_respondsToSelector從Objective-C代碼迅捷的類方法
class ViewController: UIViewController {
func helloWorld(a: String)
{
print(a);
}
}
假設我的目標名稱爲Pebble
,從Objective-C類,我需要了解,如果類ViewController
對選擇器helloWorld:
作出響應。我曾嘗試以下語句:
class_respondsToSelector(NSClassFromString(@"Pebble.ViewController"), NSSelectorFromString(@"helloWorld"))
class_respondsToSelector(NSClassFromString(@"Pebble.ViewController"), NSSelectorFromString(@"helloWorld:"))
class_respondsToSelector(NSClassFromString(@"ViewController"), NSSelectorFromString(@"helloWorld:"));
class_respondsToSelector(NSClassFromString(@"ViewController"), NSSelectorFromString(@"helloWorld"));
然而,
1)在ViewController
當我寫let responds = self.responds(to: Selector("helloWorld:"))
- 它返回true
。
2)AppDelegete
當我寫let responds = ViewController.responds(to: Selector("helloWorld:"))
- 它返回false
。
3)AppDelegete
當我寫let responds = ViewController.instancesRespond(to: Selector("helloWorld:"))
- 它返回false
。
以上全部返回NO
。應該做些什麼來解決這個問題或錯誤是什麼?
這個工程。當函數類似於'helloWorld(a:String b:String)'(即多個參數)時,ObjC等價物將如何看待。 Swift 2.3中的行爲有何不同? – prabodhprakash
「當生成Objective-C選擇器時,它與」With「連接在一起 - 」 - 有趣! – Andreas
@prabodhprakash,它變成'helloWorldWithA:b:',具有兩個參數的Objective-C選擇器有兩個冒號。 – OOPer