gpt4 book ai didi

iphone - 声明说明 - (IBAction)changeGreeting :(id)sender; iPhone

转载 作者:行者123 更新时间:2023-11-28 18:04:30 25 4
gpt4 key购买 nike

到处都在说 IBAction 是什么,但没有解释整个声明的含义。

发件人和ID是什么?

问候,南拉他

最佳答案

  1. 据我所知,IBAction 只是意味着 void

  2. id 是通用的 C 类型,它接受任何类型/类的对象。有点类似于C中的void pointer。我们可以使用 id 作为方法的参数,以防不同类的对象访问该方法。

  3. 发件人,这里,

    • 是一个人为命名的参数名(你可以给它起任何名字)
    • 它引用调用方法changeGreeting:
    • 的对象

一个例子:

假设方法 changeGreeting: 定义在 ClassA 中,其内容如下所示。

- (IBAction)changeGreeting:(id)sender {

[sender setText:@"Hello %@", [sender class]];

// Nothing can be returned from this method
}

并考虑我们在 B 类 中有以下几行。

// LINE 1
[aLabel addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];

// LINE 2
[aTextField addTarget:objOfClassA action:@selector(changeGreeting:) forControlEvents:UIControlEventTouchUpInside];

在第 1 行中,aLabel发送者objOfClassA接收者。在第 2 行中:aTextField发送者objOfClassA接收者。这里aLabelaTextField 被称为senders 因为它们正在调用 方法changeGreeting: .而 objOfClassA 被称为 receiver 因为 objOfClassA changeGreeting: 方法在这里被调用

当用户触摸 aLabelaTextField 时,他们的 text 将更改为 Hello UILabelHello UITextField 分别。

另一种方式: 我们还可以从 Class B 调用 changeGreeting: 方法 objOfClassA ,如下所示。

[objOfClassA changeGreeting:aLabel];
[objOfClassA changeGreeting:aTextField];

由于上面的代码是不言自明的,objOfClassA接收者。但是 aLabelaTextField 不是发送者。因为他们没有调用该方法。在这里它们只是参数。这里实际的发送者是 Class B,但是 aLabelaTextField 是在参数 (id)sender 中传递的。无论哪种方式,方法执行的结果都是相同的。

关于iphone - 声明说明 - (IBAction)changeGreeting :(id)sender; iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com