What is Selector?

翻譯自這里

selector 是一個對象(object)選擇執行某個方法的名稱,或者是代碼編譯后用來唯一標識一個方法。selector 自己不能做任何事,它只是定義了一個方法。selector 與普通字符串的區別就是編譯器確保它是唯一的。它只有在運行時扮演類似動態方法指針的角色,也就是正確指向一個類的實現文件中的方法。
例如,你創建了 run 方法,和 Dog, Athlete, ComputerSimulation 這些類,并且這些類都實現了 run 方法。對象可以通過 selector 調用各自的 run 方法。

獲取 selector

SELselector 編譯后的類型,通常有兩種方式獲取 selector:

  • 在編譯時期,用 @selector
    SEL aSelector = @selector(methodName);
  • 在運行時期,用 NSSelectorFromString 這個方法
    SEL aSelector = NSSelectorFromString(@"methodName");
    You use a selector created from a string when you want your code to send a message whose name you may not know until runtime.
使用 selector

你可以通過 performSelector: 或其它類似的方法來調用一個方法

SEL aSelector = @selector(run);
[aDog performSelector:aSelector];
[anAthlete performSelector:aSelector];
[aComputerSimulation performSelector:aSelector];

(You use this technique in special situations, such as when you implement an object that uses the target-action design pattern. Normally, you simply invoke the method directly.)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,768評論 0 9
  • 我們常常會聽說 Objective-C 是一門動態語言,那么這個「動態」表現在哪呢?我想最主要的表現就是 Obje...
    Ethan_Struggle閱讀 2,231評論 0 7
  • 本文轉載自:http://southpeak.github.io/2014/11/03/objective-c-r...
    idiot_lin閱讀 389評論 0 0
  • runtime 運行時語言,實現Object-C的C語言庫,將OC轉換成C進行編譯的過渡者。 作為一門動態編程語言...
    夜雨聲煩_閱讀 557評論 0 0
  • 人生是一場旅程。 我們經歷了幾次輪回, 才換來這個旅程。 而這個旅程很短, 因此不妨大膽一些, 不妨大膽去愛一個人...
    真誠永恒閱讀 200評論 2 5