是@selector
某種類型的長C語法的方便語法,或者是它的「硬連線」的一部分Objective-C語言/編譯器?例如,我知道當我根據參數調用@property
時,不同的等效Objective-C代碼是「生成的」re:獲取者和設置者。 @selector
幕後發生了什麼?它是否指定了Objective-C消息?有沒有@selector語法指定選擇的方式/是怎麼回事幕後與@selector
0
A
回答
3
@selector()
是語言的一部分。它指定文字SEL
就像@""
指定文字NSString
。
這是值得理解的是@selector
代表一個選擇,而不是消息。選擇器只是一個名字。這只是消息的一小部分。它甚至不包含類型信息。
還要注意的是@property
不會產生任何東西。它只是承諾對象會響應一個或兩個選擇器(getter和setter)。有幾種方式來履行合同。 @synthesize
只是其中之一。您也可以手動實現所需的方法,或者使用@dynamic
來承諾它將在運行時以某種方式處理。
2
要回答你的標題問題,NSSelectorFromString
將讓您創建從NSString
選擇(你也可以做NSStringFromSelector
對面),雖然這是更有效地使用@selector
。
+0
具體而言,'@ selector'指令在編譯時轉換爲SEL,而'NSSelectorFromString()'是在運行時調用的普通函數。 – Chuck 2012-04-02 21:45:09
相關問題
- 1. jQuery find .Selector但不是嵌套選擇器(.selector .selector)
- 2. 語法@selector的
- 3. 「jQuery(selector)」和「$(selector)」有什麼區別?
- 4. setAnimationDidStopSelector @selector沒有運行方法
- 5. @selector沒有發生
- 6. jQuery Selector:選擇元素,沒有特定的元素
- 7. 爲什麼jQuery中的.selector屬性沒有存儲有效的選擇器值?
- 8. 是IMP和@selector有關嗎?
- 9. ccTouchesMoved和選擇器:@selector(ButtonTapped :)
- 10. 有沒有辦法使用$('...')來選擇文本節點?load('url selector')?
- 11. JQuery Selector - 選擇它,不是嗎?
- 12. iPhone:差異@selector語法
- 13. jQuery Selector:選擇具有特定高度的元素
- 14. jQuery:$('。selector',myContext)和myContext.find('。selector')之間是否有功能差異?
- 15. 方法的參數@selector
- 16. jQuery .is(selector) - 所有選擇器都與參數匹配?
- 17. jquery parent-selector與contains-selector結合使用
- 18. $('selector',element)與element.find('selector')相同嗎?
- 19. 有沒有辦法擺脫的方法通過使用@selector除了使用雙指針的返回值?
- 20. $ .children(「selector」)vs $(「selector」,parent)vs「parent> child」選擇器
- 21. Jquery Selector錯誤,無法選擇單擊事件上的元素
- 22. 爲什麼$('selector')find找不到與$ .find('selector')相同的對象?
- 23. #selector
- 24. 「.selector」
- 25. #selector()和Selector()之間的差異是什麼?Swift
- 26. 什麼是var $ removable = $ container.find(selector);?
- 27. NSNotification不是調用@selector方法
- 28. 指定另一個對象上的@selector方法?
- 29. LESS Mixin Bug:Pseudo Selector後
- 30. jQuery Selector返回沒有特定類的元素隱藏的所有元素
所以,大致'@selector(popViewControllerAnimated:)'是大致相同'(SEL *)popViewControllerAnimated:'? – 2012-04-02 20:07:13
它只是'SEL',而不是'SEL *',但如果後者是合法語法,這基本上是真的。這就像是說'@「foo」'和'(NSString *)foo'是一樣的。對於一個足夠粗糙的版本,這是真的。 – 2012-04-02 20:11:48