我可以关注 Apple 的大部分 WiTap 示例,但在发送方法中的这一点上有点难过:
- (void) send:(const uint8_t)message
{
if (_outStream && [_outStream hasSpaceAvailable])
if([_outStream write:(const uint8_t *)&message maxLength:sizeof(const uint8_t)] == -1)
[self _showAlert:@"Failed sending data to peer"];
}
- (void) activateView:(TapView*)view
{
NSLog(@"ACTIVATE TAG: %d", [view tag]);
//[self send:[view tag] | 0x80];
[self send:[view tag]];
}
- (void) deactivateView:(TapView*)view
{
NSLog(@"DEACTIVATE TAG: %d", [view tag]);
//[self send:[view tag] & 0x7f];
[self send:[view tag]];
}
请注意,我已将 send: 参数更改为仅视图的标记,编号为 1-9。最初代码具有按位与和或调整。
为什么?
我知道 send 方法需要 a 的事实uint8_t
,但这就是为什么存在按位的东西吗?将 NSInteger 变成 unint8_t?
该代码不适用于我上面的更改。它将很好地记录并且视觉上客户端将正常运行,但是消息没有从客户端正确地发送/接收到客户端。
有人可以用简短的话解释一下按位的东西在做什么吗?还是我是正确的?
谢谢!这是我对 SO 的第一个问题,所以请善待。
感谢您的回复。我还是有点疑惑。得到它?
基本上,为什么?
这只是传递标识符的一种极客方式吗?这些视图中的每一个都有一个标签#,为什么不直接传递它,并从视图类切换状态(上/下)?
这只是“这就是编写它的人是如何做到的”的一个例子,还是我错过了一个关键的难题,因为这也是我应该如何构建我的代码的方式。
我只想传递一个标签#,然后让该标签决定在一个清晰可读的函数中做什么,比如toggleUpOrDownState
什么。
我猜,这种按位计算的东西总是让我觉得自己很愚蠢,除非有必要等等。然后我觉得自己很愚蠢,但无论如何还是设法蒙混过关。:)