cocoa arc4random OS X 10.6

时间:2011-11-07 23:52:59

标签: cocoa osx-snow-leopard arc4random

我为Lion创建了一个简单的自定义视图应用程序。现在,一位朋友使用Snow Leopard对其进行了测试,无法启动它。可悲的是,我没有例外。我唯一知道的是,它是关于arc4random的函数调用,这在她的版本中是不可用的。 我实际上无法想象,这样一个必不可少的功能是在Lion中引入的(是的,我对可可来说相当新......),所以你们有什么想法,那可能是什么意思? 我会尝试获取异常详细信息,但我的时间压力很大......

1 个答案:

答案 0 :(得分:0)

我的应用程序在Snow Leopard上崩溃时遇到了类似的问题,崩溃报告说:

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

我必须多次阅读documentation,直到我意识到arc4random()本身自10.4以来可用,但arc4random_buf()仅在10.7之后可用。如果你使用arc4random_buf()函数(像我一样),它将不会在10.6上运行。

所以,我只是用以下C代码替换了arc4random_buf()函数:

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。