CGFloat具有奇怪的默认值

时间:2013-07-29 09:40:30

标签: ios objective-c

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

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

日志返回 0.0 ,虽然我希望nil,但这不是真正的问题。如果我现在将此应用程序导出到iOS .ipa并从那里安装应用程序,则newY会自动初始化为 185.000 。 当从.ipa安装应用程序而不是直接从XCode安装应用程序时,这个值来自何处以及它为何不同?

我真的很感激任何有关正在发生的事情的见解,这对我没有任何意义。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

CGFloat不是指针,因此无法指定nil。

这是一个自动变量,因此它在内存中占有一席之地,并且它会在您初始化它时获取已存储的值。该值未定义,因此您应该初始化它。