Xcode 编译器没有将我的变量(和指针)初始值设置为 0 或 nil
这非常烦人,因为现在我的值存储起来就好像它们默认包含某些内容一样(就像在 C 中一样)。我所有的面向对象的东西现在都被破坏了,因为我的代表总是有东西。我想知道为什么 Xcode 对我这样做,因为默认情况下 Xcode 总是将变量值设置为 0 或 nil。
所以如果我这样做 NSArray* anArray;
进而 NSLog(%@"%@", anArray);
它可能会崩溃或记录最后分配的内存。这非常令人沮丧。
this is very annoying, since now my values are stored as if they contain something by default (like in C). All my OO stuff are now broken since my delegate are always something. I was wonderin why Xcode do this to me, since by default Xcode always set the variable value to 0 or nil.
So if I doNSArray* anArray;
and thenNSLog(%@"%@", anArray);
It could crash or log hasard last allocated memory. This is very frustrating.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
C、Objective C 和 C++ 都将全局变量初始化为零/null/Nil。局部变量不会自动初始化,必须显式初始化。
此外,指向 NSArray 的指针不是 NSArray。在使用该指针之前,您应该将 NSArray 安排在其末尾。例如,制作一个新的,更像是
C, Objective C, and C++ all initialize global variables to zero/null/Nil. Local variables are not automatically initialized and must be explicitly initialized.
Additionally, a pointer to a NSArray is not an NSArray. Before using that pointer, you should arrange for an NSArray to actually be at the end of it. For instance, make a new one, something more like
在这方面,Objective C 的行为与 C 非常相似,即默认情况下不初始化非全局变量。防御性地编写代码,并始终显式初始化指针变量(NULL 或有效地址)。
Objective C behaves much the same as C in this regard, i.e. non-global variables are not initialised by default. Code defensively and always initialise pointer variables explicitly (either to NULL or to a valid address).