LoginSignup
13
12

More than 5 years have passed since last update.

[Swift][iOS]64bit対応におけるarc4random()について

Last updated at Posted at 2015-08-26

現在(2015.08)、メインストリームのiOS端末には、32bitCPUを搭載したものと、64bitCPUを搭載したものの2種類あります。
私自身はアーキテクチャについて全くわかりませんが、これら2つのうち、一方では正常に動作するものの、もう一方ではエラーを発生させるプログラムがあります。

そのひとつがarc4random()です。
乱数を発生させる関数としてよく使われますが、これを使うとエラーが起きます。
64bit端末では正常に動作しますが、32bit端末ではエラーを吐いてクラッシュします。
私の勘では64bit対応が義務となった弊害かと思われます。

・解決法
arc4random_uniform(UInt32)を使う

内部の事は私には詳しくわかりません、が、arc4random()の代わりにarc4random_uniform(UInt32)を使うと、32bit端末でも64bit端末でも、いずれでも正常に動作します。
引数のUInt32には、乱数の数を与えてやります。
たとえばarc4random_uniform(10)は、0〜9の範囲でランダムに値を返します。
ちなみにarc4random()よりも"ランダムな"乱数となるようです。乱数発生にはarc4random_unidorm(UInt32)を使って下さい。

arc4random_uniform(UInt32)は返り値がUInt32型になるのだろうか...?

13
12
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12