gpt4 book ai didi

objective-c - iOS 双方法参数失败

转载 作者:可可西里 更新时间:2023-11-01 06:16:31 27 4
gpt4 key购买 nike

我有一些框架代码可以做到这一点:

#ifdef USE_DOUBLE
typedef double real;
#else
typedef float real;
#endif

但是当我尝试在 USE_DOUBLE定义(如此真实 == double)时使用这种类型时,如下所示:

- (id) initSomeObject:(real)arg  andSomeOtherStuff:(id)thing
{
self = [super init];
if (self)
{
field = arg;
}
}

[someObject initSomeObject:2.0 andSomeOtherStuff:nil];

arg 值完全被丢弃,显示为 5.3...e-315。 但是,如果我将USE_DOUBLE 关闭2.0 的值就可以正常工作。这是在最新的 iOS 5+ 上,在 iPhone 4 上使用 Xcode 4.3.3 和 LLVM 3.1。iOS 不能很好地处理 double 吗?我的 USE_DOUBLE 标志是否应该始终未定义?

最佳答案

定义 USE_DOUBLE 和类型 real 是在我的应用程序使用的静态库中定义的。结果是 USE_DOUBLE 需要在框架客户端应用程序中设置为相同的值 typedef 才能正常工作。似乎我的应用程序被认为是一个单独的编译单元,这意味着因为它没有定义 USE_DOUBLEreal 是一个 float 。这导致运行时缩小我的值的精度并导致意外/未定义的行为。将 #define USE_DOUBLE 添加到我的应用程序项目中似乎已经解决了这个问题。

关于objective-c - iOS 双方法参数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com