2011-11-07 138 views
1

我为Lion创建了一个简单的自定义视图应用程序。现在一位朋友使用Snow Leopard进行测试,无法启动它。可悲的是我没有例外。我所知道的唯一的事情就是关于arc4random的函数调用,这在她的版本中是不可用的。 我实际上无法想象,这样一个重要的功能是在Lion中引入的(是的,我对可可很新颖),所以你们有什么想法,那可能是什么? 我会尽力拿到异常详细信息,但我几乎在时间压力下...cocoa arc4random OS X 10.6

+0

该手册页可以追溯到OS X v10.3。是什么让你认为'arc4random()'在10.6上不可用?你有错误信息吗? – 2011-11-07 23:58:49

回答

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上运行。

所以,我刚刚更换了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()叫了好几次,但它工作在所有Mac OS从10.4至10.8 。