NSString里面的问题将会消失

我现在正在和这段代码作斗争,我真的很感激你的洞察力。 所以这里是…

在我的.h文件中声明的fileName

  NSString *fileName; 

后来又如

  @property (nonatomic, copy) NSString *fileName; 

viewWillDisappear不可访问。 它只是显示为零对象,或一些奇怪的价值,当我debugging。 当我debugging时,我的控制台显示这个味精:

打印fileName的说明: 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不是。 任何见解,想法,想法,将不胜感激。

在你的init方法中改变它来读取self.fileName =

您需要使用您的属性方法,以便制作string的副本,因为您使用的是variables而不是您正在分配自动释放string的属性。 通过使用self.fileNamestring将被复制,不会被自动释放。