2012-02-09 15 views
2

Objective-Cでは、 "(UIButton *)sender"は何を意味し、なぜ "UIButton * sender"ではないのですか?または、UIButtonの代わりにいくつかのNSObject。これはなぜ "(UIButton *)送信者"で、 "UIButton *送信者"ではないのですか?

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

これらの回答は面白いかもしれません:http://stackoverflow.com/questions/2189212/why-object-dosomething-and-not-object-dosomething/2214980#2214980 and http://stackoverflow.com/質問/ 1304176/objective-c-difference-id-and-void/1304277#1304277 – bbum

答えて

6

それはこの場合の優先順位についてではありません...もっとアスタリスクの優先順位についての質問です。カッコはキャストされていません。

これはメソッド宣言のためのObjCの構文であり、senderというパラメータはUIButton *の型であると言います。

アスタリスクは一緒に引数の型を指定するため、UIButtonと一緒に使用されます。この場合、ボタンから来るアクションメソッドなので、UIButton *を使用しています。一般的なケースでは、もちろん、メソッドは、呼び出し元が正しく呼び出している限り、任意の型のパラメータを持つことができます。 :)

+0

ああ、私はそれを得る。これはちょっと慣れています。あなたが言ったことは今や意味があるので、私は脳を痛めつけるのを止めることができます。間違った方向にグーグルで過ごすにはあまりにも多くの時間を費やした。ありがとう! – kdask

+0

+1、Obj-Cのメソッド型宣言の構文です。 – Richard

+1

申し訳ありませんが、「カッコはキャストではありません」とは分かりません。あなたは 'sender'パラメータをデフォルトの' id'にキャストして、もっと特殊な型 'UIButton *'にします。どのようにキャストされていないのですか? – NSGod

関連する問題