几天来我一直在与这段代码作斗争,我真的很感激你的见解。所以这里是...
fileName
在我的 .h
文件中声明为
NSString *fileName;
和后来的
@property (nonatomic, copy) NSString *fileName;
在 viewWillDisappear
中不可访问。当我调试时,它只是显示为 nil 对象或一些奇怪的值。当我调试时,我的控制台显示此消息:
文件名的打印说明: FileNumber1
当我到达 viewWillDisappear
时,我的控制台显示如下:
文件名的打印说明:
是的,fileName 什么都没有..值就消失了..我只是不知道为什么!!!
更多详情:
在我的 init
方法中,我执行了以下操作并且工作正常。
fileName = [[NSString alloc] initWithString:(NSString *)CFURLGetString(pdfURL)];
fileName = [[fileName lastPathComponent] stringByDeletingPathExtension];
fileName = [fileName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
在整个程序中,我可以很好地访问 fileName
,但是在 viewWillDisappear
中,我试图通过尝试以下操作来保存到我的 standardUserDefaults
:
NSUserDefaults *ud = [[NSUserDefaults standardUserDefaults] autorelease];
NSArray *tmp = [NSArray arrayWithArray:someMutableArray];
[ud setObject:tmp forKey:fileName]; // THE PROBLEM IS HERE WITH fileName AS AKEY
[ud synchronize];
[tmp release];
此时 someMutableArray
是可访问的,但 fileName
不是。任何见解,想法,想法,将不胜感激。
最佳答案
在您的初始化方法中将其更改为读取 self.fileName =
您需要使用您的属性方法,以便生成字符串的副本,目前是因为您使用的是变量而不是分配给自动释放字符串的属性。通过使用 self.fileName 字符串将被复制并且不会被自动释放。
关于iphone - viewWillDisappear 中 NSString 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7952885/