UUID を使ってユニークな識別子を作成する

投稿者: | 2013/09/07

オブジェクトの管理用に動的に生成できるユニークな識別子が欲しい

オブジェクトを管理するときに、ユニークな識別子が欲しい。
しかし、採番管理のために管理者クラスを設置するのは面倒臭い。

ちょうど先日読んでいた「iOSにおけるパターンによるオートマティズム」に良さげな方法が載っていました。
何度か書いたのですが、まだ手が憶えていない感じなので、ブログにも書いて記憶定着と備忘録に。

iOS開発におけるパターンによるオートマティズム
木下 誠
ビー・エヌ・エヌ新社


この本、Kindle化してくれないですかね。

 

UUID を使う

そんなときにはUUIDを使います。

UUIDは"機器の名前や時刻情報などを基に「十分大きなサイズかつランダムな数値」として生成される仕組み"なので、まずもって重複する可能性はありません。
(具体的には、およそ5.3×10の36乗分の1)

Linuxキーワード – UUID とは:ITpro


 

コード

本に掲載しているコードままだと、UUIDをNSString にキャストする際に怒られます。
どうやらARC絡みで、キャストに__bridge_transfer 指定を付記してやればええ様です。

こんな感じ。

    CFUUIDRef uuid;
    uuid = CFUUIDCreate(NULL);
    identifier_ = (__bridge_transfer NSString*)CFUUIDCreateString(NULL, uuid);
    CFRelease(uuid);

 

参考

ちなみに、__bridge_transfer については、こちらのページを参考にさせて頂きました。


 

蛇足

ちょいとノマドりにお出かけ中。
昼食は待望のお店でとる予定。

彼の地へ!!

 



 

UUID を使ってユニークな識別子を作成する」への4件のフィードバック

  1. taturou

    UUIDの取得は禁止されていますよ。
    昔はそうではなかったのですが、現在はダメです。
    UUIDを取得しているアプリは、Appleの審査で拒否されます。
    UUIDを用いず固有のiPhoneを識別する手段はAppleからは提供されていません(-_-;
    自分で(クラウド上などに)データベースを作って識別する必要があります。

    返信
  2. uma_blue

    taturou 
    コメントありがとうございます。<(_ _)>
    あれ?UDID だけじゃなくてUUIDも使用禁止されたでした?Σ(꒪⌓꒪ )
    なんてこったい。orz

    返信
  3. taturou

    uma_blue taturou UUIDはOKでした(>_<。
    というか「UDIDの代わりにUUID使え」でしたね。申し訳ない。

    返信
  4. uma_blue

    taturou あ、よかったですー。(T-T)
    チラッとググっても「UUIDアウト」 の記事が見つかりませんで。
    あー、これは英語の記事とか探さんとあかんのかなー?と思いはじめておりました。(笑)

    返信

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください