我刚遇到一个非常奇怪的错误,可能是由于缺乏对Objective C数据类型的了解而发生的。
如果我这样做:

CGFloat newY;
NSLog(@"newY is %f", newY);

日志返回 0.0 ,尽管我期望为nil,但这不是真正的问题。如果我现在将此应用程序导出到iOS .ipa并从那里安装该应用程序,则newY将自动初始化为 185.000
从.ipa而不是直接从XCode安装应用程序时,此值来自何处?为什么与众不同?

我非常感谢对正在发生的事情有任何见解,对我来说这没有任何意义。

最佳答案

newY未初始化为零,这就是当时堆栈(存储newY的位置)上发生的任何事情。这在不同的平台上可能会有所不同,但在执行之间可能也会发生变化。

您很可能会收到警告,告诉您在自己初始化之前使用newY是不安全的。

关于ios - CGFloat的默认值很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17920660/

10-10 02:30