【问题标题】:cocoa arc4random OS X 10.6可可 arc4random OS X 10.6
【发布时间】:2011-11-07 23:52:58
【问题描述】:

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

【问题讨论】:

  • 手册页可以追溯到 OS X v10.3。是什么让您认为 arc4random() 在 10.6 上不可用?你有错误信息吗?

标签: cocoa osx-snow-leopard arc4random


【解决方案1】:

我的应用在 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。

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多