2010-04-24 49 views

回答

2

直接調用方法更具可讀性。當您需要更高級的消息傳遞時,應該保留performSelector:

嚴格地說,您不需要導入類來向其發送消息,因爲消息分派是動態的而不是靜態的,儘管您會收到編譯時警告,指出對象可能不會響應選擇器。

+0

您可以直接導入類並直接發送消息的好處是編譯時類型/接口定義檢查,並且如outis所述更高效。 performSelector通常用於不可能知道目標類的泛型類,並依賴程序員確保該方法存在。即UITimer,UIButton等。 – gnasher 2010-04-24 13:31:01

+0

還應該提到的是,您可以通過在相關目標上調用' - (BOOL)respondsToSelector:@selector(mySelector)'來檢查對特定選擇器的響應,以避免運行時崩潰。 – katzenhut 2013-03-12 17:00:51

0

一般來說,反射操作(如performSelector:)比直接操作效率低。不過,我不得不承認,我對objC不是很熟悉。

相關問題