1

我为 Lion 创建了一个简单的自定义视图应用程序。现在有朋友用 Snow Leopard 对其进行了测试,但无法启动它。可悲的是我没有例外。我唯一知道的是,这是关于 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

我不得不多次阅读文档arc4random(),直到我意识到它本身从 10.4 开始可用,但arc4random_buf()仅从 10.7 开始可用。如果您使用该arc4random_buf()功能(如我),它将无法在 10.6 上运行。

所以,我只是用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 回答