我想通過[self delegate]
得到一個對象的方法。我知道它是哪個類,所以我可以導入類並正常調用,但我也可以使用performSelector:
,它不需要導入我的類。我不需要傳遞參數給方法。是的,我的確看過this。在這種情況下哪一個更好?我應該使用performSelector:當我也可以正常調用方法嗎?
2
A
回答
2
直接調用方法更具可讀性。當您需要更高級的消息傳遞時,應該保留performSelector:
。
嚴格地說,您不需要導入類來向其發送消息,因爲消息分派是動態的而不是靜態的,儘管您會收到編譯時警告,指出對象可能不會響應選擇器。
0
一般來說,反射操作(如performSelector:
)比直接操作效率低。不過,我不得不承認,我對objC不是很熟悉。
相關問題
- 1. 我應該在控制器中使用正常的方法嗎?
- 2. 我可以從wsdl調用方法嗎?
- 3. 這是正確的嗎?使用performSelector而不是隻調用該方法直接
- 4. 我應該使用replace()方法嗎?
- 5. 我應該使用這種方法嗎?
- 6. 我可以在Java中動態調用該方法嗎?
- 7. 應用程序最小化後,我們可以調用該方法嗎?
- 8. 我可以使用私人方法嗎?
- 9. 我可以用相同的方法調用一個方法嗎?
- 10. 當我們可以使用ClearAllPools方法?
- 11. 我可以使用str2func調用一個類方法嗎?
- 12. 我可以使用方法而不是常量嗎?
- 13. MATLAB OOP,我可以調用調用類的方法嗎?
- 14. 可以/我應該使用ConcurrentMap和我自己的緩存嗎?
- 15. 如果我可以自己開發,我應該使用CMS嗎?
- 16. 我也可以使用我的新用戶表單登錄嗎
- 17. 我可以使用Mockito插入延遲,然後調用真正的方法嗎?
- 18. 我可以在Android的getView()方法中調用setContentView()方法嗎?
- 19. 我應該如何調用'startActionMode'方法?
- 20. 當我擁有一個對象時,我可以調用靜態java方法嗎?
- 21. 我也應該使用numpy.float64而不是Python float當使用numpy.array
- 22. 我可以使用字符串方法名稱調用c#動態方法嗎?
- 23. 我可以使用PInvoke從我自己的dll調用方法嗎?
- 24. 我可以使用phonegap調用我自定義的Objective C類的方法嗎?
- 25. 我可以註冊NSNotifications類嗎?我可以在NSNotifications中使用類方法嗎?
- 26. 當我使用node.js時,我應該使用循環異步方式嗎?
- 27. 我應該使用HTML5語法嗎?
- 28. 我應該使用AJAX嗎?
- 29. 我應該使用document.writeln嗎?
- 30. 我應該使用convertView嗎?
您可以直接導入類並直接發送消息的好處是編譯時類型/接口定義檢查,並且如outis所述更高效。 performSelector通常用於不可能知道目標類的泛型類,並依賴程序員確保該方法存在。即UITimer,UIButton等。 – gnasher 2010-04-24 13:31:01
還應該提到的是,您可以通過在相關目標上調用' - (BOOL)respondsToSelector:@selector(mySelector)'來檢查對特定選擇器的響應,以避免運行時崩潰。 – katzenhut 2013-03-12 17:00:51