viewWillDisappear中的NSString问题

时间:2011-10-31 11:09:44

标签: iphone ios nsstring nsuserdefaults viewwillappear

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

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不可访问。任何见解,想法,想法,将不胜感激。

1 个答案:

答案 0 :(得分:3)

在init方法中

将其更改为self.fileName =

您需要使用属性方法,以便创建字符串的副本,因为您使用的是变量而不是要分配自动释放字符串的属性。通过使用self.fileName,字符串将被复制,不会被自动释放。