Nam*_*tha 0 iphone declaration objective-c ibaction ios
他们在哪里说IBAction是什么,但不解释整个声明的含义.
什么是发件人和身份证?
此致,Namratha
据我所知,IBAction只是暗示void
id是一种通用的C类型,它接受任何类型/类的对象.它是一些类似于void指针的东西C.我们可以使用id作为方法的参数,以防不同种类的对象访问该方法.
sender, 这里,
changeGreeting:一个例子:
让我们假设该方法changeGreeting:已定义ClassA,它的内容如下所示.
- (IBAction)changeGreeting:(id)sender {
[sender setText:@"Hello %@", [sender class]];
// Nothing can be returned from this method
}
Run Code Online (Sandbox Code Playgroud)
并且考虑我们有以下几行Class B.
// LINE 1
[aLabel addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];
// LINE 2
[aTextField addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
在LINE 1中,aLabel是发送方并且objOfClassA是接收方.在LINE 2中:aTextField是发送者,objOfClassA是接收者.这里aLabel和aTextField被称为发件人,因为他们正在调用方法changeGreeting:.而objOfClassA被称为接收器,因为objOfClassA's changeGreeting:方法叫做这里.
当用户内部的触摸aLabel或者aTextField,他们text将改为Hello UILabel或Hello UITextField分别.
另一种方法:
我们也可以调用changeGreeting:的方法objOfClassA从Class B像下面这样.
[objOfClassA changeGreeting:aLabel];
[objOfClassA changeGreeting:aTextField];
Run Code Online (Sandbox Code Playgroud)
由于上面的代码是自我解释的,objOfClassA是接收者.但是,aLabel与aTextField是不是发件人.因为他们没有调用该方法.在这里,他们只是争论.这里实际的发送者Class B,但aLabel和aTextField在参数传递(id)sender.无论哪种方式,方法执行的结果都是相同的.
| 归档时间: |
|
| 查看次数: |
2572 次 |
| 最近记录: |