忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

NSDataのbyte変換時にポインタを進めた場合の注意点

わか

iOSにはNSData型というオブジェクトがあります。
NSDataはbyteデータを扱いやすくするもので、非常に便利です。
今回NSDataを使用して、想定外だった動きを記載します。

NSDataは [NSData型オブジェクト bytes] と記載するとbyteの先頭ポインタを返してくれます。
そこから先頭ポインタを使用してデータアクセスできます。

先頭ポインタに対してインクリメントなどでポインタを進めた場合、元のNSData型オブジェクト(上記記載)の先頭も変わると想定していましたが変わりませんでした。
先頭ポインタを進めた状態で、[NSData型オブジェクト subdataWithRange:...] などを使用すると、先頭が変更されていない状態でNSDataが取得されます。

そりゃポインタをインクリメントしても元のオブジェクトには影響しないよ、と偉い人に言われそうですが、一瞬?と思ったので備忘録として記載します。

拍手[0回]

PR