目标C:平等==和严格平等===

Jim*_*ery 2 equality objective-c

作为一个Javascript程序员,它已被打入我的脑袋,===而不是==尽可能使用.

当我学习Objective C时,即使在官方文档中,我也只看到==被使用.

我的问题是,我是否应该继续在Objective C代码中使用严格相等的习惯?它是否与Javascript一样必要?我认为严格的平等会略微提升性能,但是在Objective C中,这种提升太小而不能产生太大影响吗?

Mar*_*cel 6

这很简单,在Objective C中,你没有===运算符.

您通常不使用==来比较对象,因为它会比较指针值,而不是对象的值.所以,如果你想比较两个字符串,你应该使用:

[stringObject isEqual:@"the string"];
Run Code Online (Sandbox Code Playgroud)

这比较字符串值,而不是指针.但是有正当理由使用==运算符来比较对象.许多委托回调都将sender对象作为参数.例如,如果要使用一个控制器实现多个tableview,则需要检查哪个tableview正在调用您的方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  if (tableView == self.firstTableView) {
     ...
  }

   if (tableView == self.secondTableView) {
     ...
  }
...
}
Run Code Online (Sandbox Code Playgroud)