只是一个简单的问题...说我创建了一个按钮并添加了一些操作:
-(IBAction)btnclicked:(id)sender {
//some code here
}
现在我想打电话给我,我可以这样做:
[self btnclicked:self];
所以我的问题是self
在btnclicked
之后的角色是什么?为什么用这种方式写它是错的:
[self btnclicked:sender];
请帮忙。
答案 0 :(得分:1)
sender是type id,可以是任何objective-c对象(或nil)。因此,您可以将任何您喜欢的内容传递给方法,编译器会很高兴。
你在该方法中所做的事情可能会激发某种类型的UIControl,所以如果你传入UIView或NSString或其他任何东西,可能会有一个无法识别的选择器或其他一些崩溃。换句话说,只要您知道自己在做什么,就可以传入自己喜欢的内容。
关于传递发件人错误的问题。我猜这是一个编译器警告,因为发件人在你正在使用它的上下文中是未定义的。 sender是赋予方法内部参数的变量名,它不是可以传递的全局变量或常量