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