2012-02-09 118 views
2

在Objective-C,這是什麼 「(UIButton的*)發件人」 的意思是,爲什麼它不 「的UIButton *發件人」?或者用一些NSObject代替UIButton。這更是一個關於星號的優先問題...爲什麼 「(UIButton的*)發件人」,而不是 「的UIButton *發件人」?

- (IBAction)digitPressed:(UIButton *)sender { 
    //... 
} 
+0

您可能會發現這些問題的答案有趣:http://stackoverflow.com/questions/2189212/why-object-dosomething-and-not-object-dosomething/2214980#2214980和http://stackoverflow.com/問題/ 1304176/Objective-C的差之間-ID-和空隙/ 1304277#1304277 – bbum 2012-02-09 04:18:10

回答

6

這不是在這種情況下優先。括號不是演員。

這是ObjC中用於方法聲明的語法,它表示名爲sender的參數的類型爲UIButton *

星號去與UIButton的,因爲他們一起命名參數的類型。在這種情況下,由於它是來自按鈕的操作方法,因此您使用的是UIButton *。在一般情況下,只要調用者正確地調用它,方法可能具有任何類型的參數。 :)

+0

啊,我明白了。這隻需要一點點習慣。你所說的話現在是有道理的,所以我可以停止絞盡腦汁。花費太多時間在錯誤的方向上搜索。謝謝! – kdask 2012-02-09 00:27:29

+0

+1,它只是Obj-C方法類型聲明語法。 – Richard 2012-02-09 00:31:49

+1

對不起,我不明白「'括號是不是cast.'」行。你將'sender'參數默認爲'id',轉換爲更具體的類型'UIButton *'。那不是演員? – NSGod 2012-02-09 03:09:40

相關問題