私は Apple の WiTap サンプルのほとんどをたどることができますが、send メソッドのこのビットにはちょっと困惑しています:
- (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 の番号が付けられたビューのタグだけに変更したことに注意してください。元々、コードにはビット単位の AND および OR 調整がありました。
なぜ?
send メソッドには が必要であるという事実がuint8_t
わかりましたが、それがビット単位のものがある理由ですか? NSInteger を unint8_t に変換するには?
上記の変更でコードが機能しません。正常にログに記録され、視覚的にクライアントは正しく機能しますが、メッセージはクライアントからクライアントへ正しく送受信されていません。
誰かがビット単位のものが何をしているのかを短い言葉で説明できますか? それとも私は正しいですか?
ありがとう!これはSOへの私の最初の質問ですので、親切にしてください.
返信ありがとうございます。私はまだ少し困惑しています。それを得る?
基本的に、なぜですか?
これは、識別子を渡すためのマニアックな方法ですか? これらの各ビューにはタグ # があります。それを渡して、ビュー クラスから状態 (上/下) を切り替えてみませんか?
これは、「これを書いた人がこのようにした」という単なるケースですか、それとも、これがコードを構造化する方法でもあるという点で、パズルの重要なピースが欠けているのですか。
タグ # を渡したいだけで、そのタグに、明確に読みやすい関数などで何をするかを決定させますtoggleUpOrDownState
。
このビットごとのものは、必要でない限り、私はいつも私を愚かに感じさせます. : )