1

只是一个简单的问题...假设我创建了一个按钮并为其添加了一些操作:

-(IBAction)btnclicked:(id)sender {
        //some code here
}

现在我想打电话给它,所以我可以这样做:

[self btnclicked:self];

所以我的问题是,剧selfbtnclicked扮演什么角色?为什么这样写会出错:

[self btnclicked:sender];

请帮忙。

4

1 回答 1

1

sender 是类型 id,可以是任何objective-c 对象(或nil)。所以你可以将任何你喜欢的东西传递给方法,编译器会很高兴。

但是,您在该方法中所做的可能会导致某种 UIControl 异常,因此如果您传入 UIView 或 NSString 或其他任何内容,则可能会出现无法识别的选择器或其他崩溃。换句话说,你可以传入你喜欢的,只要你知道你在做什么。

对于您关于传递发件人错误的问题。我猜这是给编译器警告,因为在您使用它的上下文中未定义发件人。sender 是方法内部参数的变量名,它不是可以传递的全局变量或常量

于 2012-07-14T09:40:29.743 回答