2012-04-02 67 views

回答

3

@selector()是語言的一部分。它指定文字SEL就像@""指定文字NSString

這是值得理解的是@selector代表一個選擇,而不是消息。選擇器只是一個名字。這只是消息的一小部分。它甚至不包含類型信息。

還要注意的是@property不會產生任何東西。它只是承諾對象會響應一個或兩個選擇器(getter和setter)。有幾種方式來履行合同。 @synthesize只是其中之一。您也可以手動實現所需的方法,或者使用@dynamic來承諾它將在運行時以某種方式處理。

+0

所以,大致'@selector(popViewControllerAnimated:)'是大致相同'(SEL *)popViewControllerAnimated:'? – 2012-04-02 20:07:13

+0

它只是'SEL',而不是'SEL *',但如果後者是合法語法,這基本上是真的。這就像是說'@「foo」'和'(NSString *)foo'是一樣的。對於一個足夠粗糙的版本,這是真的。 – 2012-04-02 20:11:48

2

要回答你的標題問題,NSSelectorFromString將讓您創建從NSString選擇(你也可以做NSStringFromSelector對面),雖然這是更有效地使用@selector

+0

具體而言,'@ selector'指令在編譯時轉換爲SEL,而'NSSelectorFromString()'是在運行時調用的普通函數。 – Chuck 2012-04-02 21:45:09

相關問題