0

我正在与这段代码作斗争好几天了,我真的很感激你的洞察力。所以这里...

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

4

1 回答 1

3

在您的 init 方法中将其更改为读取 self.fileName =

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

于 2011-10-31T11:12:40.610 回答