NSURL вернуть ноль? - PullRequest
       14

NSURL вернуть ноль?

0 голосов
/ 10 января 2012

я объявил две переменные NSString и NSURL в интерфейсе моего контроллера

// project file url
NSURL * url_projectURL;

// temp string just for examine
NSString * tempString;

в действии моего приложения с именем:

- (IBAction) btnNewProject:(id)sender

// after running save panel and clicked Save
// 
// set project url
url_projectURL = [savePanel URL];
// set temp string
tempString = [url_projectURL absoluteString];
//
NSLog(@"tempString is: %@", tempString);
NSLog(@"ProjectURL is: %@", [url_projectURL absoluteString]);

результат:

tempString is: file://localhost/Users/kosartofiq/Documents/project.ksf
ProjectURL is: file://localhost/Users/kosartofiq/Documents/project.ksf

но в другом действии, например: - (IBAction) btn_test: (NSButton *) отправитель

NSLog(@"tempString is: %@", tempString);
NSLog(@"ProjectURL is: %@", [url_projectURL absoluteString]);

Результат: для строковой переменной:

tempString is: file://localhost/Users/kosartofiq/Documents/project.ksf

но для переменной url - ноль или ошибка при показе коэффициента

У меня вопрос: почему переменная url меняет свое значение на ноль и теряет свое значение при использовании в других действиях, но строковая переменная сохраняет свое значение? Я хочу использовать этот URL для сохранения изменений в файле, и в моем проекте я использую его некоторое время.

Ответы [ 2 ]

0 голосов
/ 10 января 2012

В вашем примере кода url_projectURL является локальной переменной, тогда как tempString и projectURL являются переменными экземпляра. Вы не используете projectURL в своем методе действия.

Измените все ссылки на url_projectURL на projectURL в вашем методе действия в соответствии с вашим объявлением.

0 голосов
/ 10 января 2012

Если вы не используете ARC, проблема в том, что вы присваиваете объекты, которые вам не принадлежат, переменным экземпляра.Если у объектов нет владельцев, они могут быть освобождены в любое время.Вы должны претендовать на владение объектами, предпочтительно используя методы доступа вместо прямой установки самих переменных.

...