微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这两个实例类型初始化方法是否相等?

如何解决这两个实例类型初始化方法是否相等?

我想知道这两个是否相等:

if 语句中的单括号:

- (instancetype)init {
    
    if (self = [super init]) {
        
        // ...
    }
    
    return self;
}

if 语句中的双括号:

- (instancetype)init {
    
    if ((self = [super init])) {
        
        // ...
    }
    
    return self;
}

解决方法

是的,......因为它只取决于被比较的表达式,无论有多少括号(应该是偶数)

括号帮助编译器理解具有优先级的表达式,目标c中的if语句至少需要一个(),而添加更多也可以,但没用

,

是的,它们是平等的。

self 正在获取需要在 [super init] 调用后存储的引用。两者都做同样的事情。

,

它们是相同的,因为它们意味着相同的东西并产生相同的代码,但是编译器的行为会略有不同。

在类似 C 的语言中,一个在视觉上很难发现的简单打字错误是输入 =,即 assignment,当 == 时,即 {{1} }, 打算。这个错误会产生非常不同的结果并且很难发现错误。例如:

equality

测试 if (a == b) { ... } a 是否具有相同的值,如果是,则执行 b 中的语句。但是:

if

if (a = b) { ... } 中的值赋给 b,然后如果 aa 的值(由于赋值而具有相同的值)是,则执行语句非零。显然,这两种行为完全不同。

为了帮助编译器在 b 中看到单个 =,它会发出警告,提醒程序员注意可能出现的拼写错误。如果使用双括号,警告将被忽略:

if

这就是为什么你会在代码中看到这种模式。 HTH

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?