1

Lion用のシンプルなカスタムビューアプリケーションを作成しました。友人がSnowLeopardを使用してテストしましたが、起動できませんでした。悲しいことに、私には例外がありません。私が知っている唯一のことは、それは彼女のバージョンでは利用できないarc4randomの関数呼び出しに関するものだということです。そのような本質的な機能がLionに導入されたとは実際には想像できません(ええ、ココアにはかなり新しいです...)。例外の詳細を取得しようとしますが、時間のプレッシャーにさらされています...

4

1 に答える 1

0

Snow Leopard でアプリがクラッシュするという同様の問題が発生し、クラッシュ レポートには次のように記載されていました。

Dyld Error Message:
Symbol not found: _arc4random_buf
Referenced from: <myApp binary>
Expected in: /usr/lib/libSystem.B.dylib

それ自体は 10.4 以降で利用可能ですが、10.7 以降でのみ利用可能であることに気付くまで、ドキュメントを数回読む必要がありました。この関数を (私のように) 使用すると、10.6 では動作しません。arc4random()arc4random_buf()arc4random_buf()

arc4random_buf()そのため、関数を次の C コードに置き換えました。

void myArc4RandBuf(uint8_t* randomBytes, size_t length) {
    size_t intBufLength = (length/4)+1;
    uint32_t randomInts[intBufLength];        
    for (int i = 0; i < intBufLength; i++) {
        randomInts[i] = arc4random();
    }
    memcpy(randomBytes, randomInts, length);
}

が数回呼び出されるため、おそらく少し遅くなりますarc4random()が、10.4 から 10.8 までのすべての Mac OS で動作します。

于 2012-10-18T14:22:36.863 に答える