gpt4 book ai didi

objective-c - sender.selected = !sender.isSelected 到底做了什么导致我的按钮切换?

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:55 26 4
gpt4 key购买 nike

目前正在学习objetive-c。浏览了各种书籍以及 lynda 网站上的一些教程,现在找到了我认为适合我学习风格的斯坦福类(class)。我一直在一遍又一遍地看前 3 个讲座,基本上是在做,直到我 100% 掌握了所教的内容,而且我已经不远了。

我很难理解以下代码的作用以及它如何导致我的按钮切换。

sender.selected = !sender.isSelected

我更愿意使用:

if (sender.selected) 
{
sender.selected = NO;
} else {
sender.selected = YES;
}

为什么?因为这对我来说很有意义,而且很明显发生了什么,因为我过去在许多其他编程语言中使用过 if 语句。我实际上可以毫无问题地完成第一个作业,并且了解其中大部分内容,但是每当我删除我的代码并重新输入以练习这一部分时,我就会感到困惑,我觉得我在欺骗自己前进没有真正理解发生了什么。

我做了一些谷歌搜索并发现了这篇文章:How does sender.selected = ! sender.selected toggle between selected states?

当我通读时,感觉就像 Spark 在我的脑海中飞舞,但还不足以点燃“啊哈,我现在明白了”的火焰。

假设在我点击/单击我的按钮之前选择了按钮我的按钮。如何设置为选中?

我觉得有人可以用对我来说有意义的方式解释它。我知道一旦它在我脑海中,它将永远留在那里。我已经在这里坐了几个小时,试图仔细考虑一下。睡着了几次,然后决定需要帮助。

提前致谢

最佳答案

您的不自在可能源于人们学习编程时的一个共同挑战,从熟悉数字到编程中使用的许多类型。简而言之,类型是一组以及一些关系,它们从集合中获取一个或多个值并产生集合中的另一个值。在现实世界中,这些集合可以是无限的 - 整数的数量是无限的 - 但在编程语言中,它们(通常)是有限的。

现在整数,又名整数,是一个集合,其值是熟悉的数字,基本操作是加、减、乘、求反等。在 (Objective-)C 中有多种整数类型 - 不同的集合具有不同的成员(member)人数;例如intunsigned long。使用这种熟悉的类型,您是否对以下内容感到满意:

int x; // declare a variable which holds a value of type int
int y; // and another one

...; // other stuff

y = -x; // place in y the negation of the value in x

毫无疑问,您会感到很舒服,这只是您可能多年来一直在做的算术运算!在集合语言中,否定关系将 int 集合的一个成员映射到另一个成员。

现在编程语言处理的类型不仅仅是整数,但它们的基本概念都是相同的 - 具有基本关系集合的集合。

boolean 类型是大多数编程语言的核心。这是一个只有两个成员的集合; ;和基本关系andor and not。 not 关系将 true 映射到 false,将 false 映射到 true。

在 Objective-C 中, bool 类型称为 BOOLYES 用于 true,NO 用于 false,基本关系是&&(和)、||(或)和 !(不)。所以现在考虑:

BOOL x; // declare a variable which holds a value of type BOOL
BOOL y; // and another one

...; // other stuff

y = !x; // place in y the "not" of the value in x

与上面的整数情况的相似之处很明显 - 它只是集合和关系。

基于此,应该清楚:

sender.selected = !sender.isSelected

优于:

if (sender.selected) 
{
sender.selected = NO;
}
else
{
sender.selected = YES;
}

后者使用控制语句 (if) 来执行实际上等同于基本算术的操作。

bool 值、整数、 float 、字符等都只是类型,以相似的方式对待它们 - 您会编写出更好的代码。

HTH.

关于objective-c - sender.selected = !sender.isSelected 到底做了什么导致我的按钮切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432107/

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