2012-02-09 73 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

相关问题