我现在正在与这段代码作斗争,我真的很感激你的洞察力。所以这就是......
fileName
在我的.h
文件中声明为
NSString *fileName;
以及后来的
@property (nonatomic, copy) NSString *fileName;
在viewWillDisappear
内无法访问。它只显示为nil对象,或者在调试时显示一些奇怪的值。当我调试时,我的控制台显示了这个消息:
打印fileName的说明: 的 FileNumber1
当我到达viewWillDisappear
时,我的控制台会显示:
打印fileName的说明:
是的,对于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
不可访问。任何见解,想法,想法,将不胜感激。
答案 0 :(得分:3)
将其更改为self.fileName =
您需要使用属性方法,以便创建字符串的副本,因为您使用的是变量而不是要分配自动释放字符串的属性。通过使用self.fileName,字符串将被复制,不会被自动释放。