Проблемы с NSString внутри viewWillDisappear - PullRequest
0 голосов
/ 31 октября 2011

Я борюсь с этим кусочком кода уже несколько дней, я действительно был бы признателен за ваше понимание.Итак, вот оно ...

fileName, которое объявлено в моем .h файле как

    NSString *fileName;

, а позже как

    @property (nonatomic, copy) NSString *fileName;

недоступновнутри viewWillDisappear.Он просто отображается как объект nil или какое-то странное значение при отладке.Когда я отлаживаю, моя консоль показывает следующее сообщение:

Печать описания fileName: FileNumber1

Когда я достигаю viewWillDisappear, моя консоль показываетthis:

Печать описания 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 Ответ

3 голосов
/ 31 октября 2011

в вашем методе init измените его на «self.fileName =

». Вам необходимо использовать методы свойств, чтобы была сделана копия строки, поскольку в настоящее время вы используете переменную, а не свойствоВы назначаете автоматически выпущенную строку.При использовании self.fileName строка будет скопирована и не будет автоматически освобождена.

...