我刚遇到了非常奇怪的错误,这可能是由于缺乏对Objective C数据类型的了解。 如果我这样做:
CGFloat newY;
NSLog(@"newY is %f", newY);
日志返回 0.0 ,虽然我希望nil,但这不是真正的问题。如果我现在将此应用程序导出到iOS .ipa并从那里安装应用程序,则newY会自动初始化为 185.000 。 当从.ipa安装应用程序而不是直接从XCode安装应用程序时,这个值来自何处以及它为何不同?
我真的很感激任何有关正在发生的事情的见解,这对我没有任何意义。
答案 0 :(得分:3)
newY未初始化为零,它是当时堆栈上发生的任何事情(这是存储newY的地方)。这可能在不同平台上有所不同,但也可能在执行之间发生变化。
您最有可能收到警告,告诉您在自己初始化之前使用newY是不安全的。
答案 1 :(得分:1)
CGFloat不是指针,因此无法指定nil。
这是一个自动变量,因此它在内存中占有一席之地,并且它会在您初始化它时获取已存储的值。该值未定义,因此您应该初始化它。