【问题标题】:Storing floats in the app delegate在应用程序委托中存储浮点数
【发布时间】:2012-09-05 16:42:55
【问题描述】:

我在我的应用代理中存储了一些浮点数,然后在应用代理的 .m 中合成它。

现在,当我在一个视图控制器中使用该浮动时,我会这样做:

del = [[UIApplication sharedApplication] delegate];
CGFloat PUEresult = (*(del.FacilitiesLoad) / *(del.ItLoad));

(ItLoad 和 FacilititesLoad 都是存储在我的委托中的浮点数)

现在在下一个控制器中我做同样的事情:

CGFloat localPUE = (*(del.FacilitiesLoad) / *(del.ItLoad));

那总是返回 inf 为什么会这样,我该如何阻止它这样做?

我已经很久没有使用 obj-c 了,请多多关照。

删除指针会这样做:

二进制表达式的无效操作数 ('CGFloat *' (aka 'float *') 和 'CGFloat *')

【问题讨论】:

  • 为什么会有这些星号?
  • 请分享 FacilitiesLoad 和 ItLoad 的定义 - 但我感觉答案将包括删除一些星号(您将这两个属性视为指针 - 但它们可能只是浮点值)跨度>

标签: objective-c uiapplicationdelegate cgfloat


【解决方案1】:

CGFloat 是原始类型,不需要使用* 符号。尝试在所有使用 CGFloat 的地方删除它并再次检查结果

不要忘记将你的应用委托转换为你的类型:

del = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];

【讨论】:

  • 这些变量的定义(在.h中)是否也有*
  • @dev6546,不要忘记将您的应用委托转换为您的类型
  • 另外,不要将你的属性声明为(strong),只有(assign) - 不能保留标量(这就是strong 指针的含义)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
相关资源
最近更新 更多