什么是这个objective-c语法

时间:2015-05-29 13:49:46

标签: objective-c syntax bitwise-operators

这里的插入符号(^)是什么,它在做什么?

- (NSUInteger)hash {
  return [self.name hash] ^ [self.birthday hash];
}

2 个答案:

答案 0 :(得分:3)

这是一个按位异或。它不是Objective-C,它只是普通的旧C.它比较你给它的两个项目的位,并返回一个1s的值,仅用于其中一个项目而不是另一个项目中的1个位。

如果您有两个号码:

5  (00000101)
11 (00001011)

按位异或将产生结果:

14 (00001110)

答案 1 :(得分:1)

这是一个按位异或操作。换句话说,如果其中一个表达式为true,则此代码尝试返回true,但不是两者。 我会这样编码:

BOOL nameHash = ...;
BOOL birthdayHash = ...;
if(nameHash && !birthdayHash) return TRUE;
if(!nameHash && birthdayHash) return TRUE;
return FALSE;

让编译器进行巧妙的优化工作。上面的代码清晰可读。如果它使代码变得模糊,那么冗长只会很糟糕。