我有一个const字符串文字被损坏。常量全局字符串文字损坏
奇怪的是,根据安装的XCode的版本,它显然有不同的表现(我必须做几个实验,然后我才能100%确认这一点),但即使它不是Xcode,我想知道原因可能是什么。
如果完全相同的代码运行在完全相同的手机上,但是一次运行它连接到运行Xcode 3.3.3的笔记本电脑,则会出现此问题,如果使用不同的笔记本电脑运行相同的代码和手机XCode 4.3.2或4.4安装然后问题不显示。
的问题是这样的:
HeaderFile.h
extern NSString* const kValue;
HeaderFile.m
NSString* const kValue = @"Some Value";
OtherFile.m
#import "HeaderFile.h"
...
NSLog(@"Value is: %@", kValue);
当连接到笔记本电脑的Xcode 4.3.3然后将该值记录或观察到全局常量调试时被损坏。
任何想法这可能是什么?
作为一个常量字面值,如果我的代码中存在错误,它不应该被潦草写过。
更新: 我检查kValue的价值didFinishLaunchingWithOptions后:被调用其已经在这一点损坏,所以没有机会为我的代码乱写就可以了,即使是scribable。
阅读此:http://stackoverflow.com/questions/4354423/explanation-of-constants – bryanmac
由于一些加载器怪癖(或由于简单地没有包括在内),常量的初始化程序很可能永远不会被调用HeaderFile.m在你的应用程序中)。 –