Вы назначаете свой URL атрибуту URL zOpenPanel
, но не указываете, что намерены сохранить ссылку, сохранив ее.
zURL = [NSURL alloc]; // assign my variable to a new URL, allocating memory
ваша вторая строка заменяет вашу ссылку ссылкой на атрибут URL zOpenPanel
, пропуская URL, который вы только что создали.
в какой-то момент позже, zOpenPanel
сообщает ОС, что оно завершено с ее URL, и освобождает оперативную память, тем самым лишая законной силы вашу ссылку.
что вы, вероятно, пытаетесь сделать:
zURL = [[zOpenPanel URL] retain];
назначает ссылку на атрибут URL zOpenPanel
и сообщает ОС, что вы хотите частично владеть его временем жизни.
Когда вы закончите работу с zURL, вам нужно будет выпустить его и отозвать заявку на срок его службы:
[zURL release];
редактирование:
так как вы объявляете его как свойство в своем классе, вы должны использовать нотацию свойства для вызова соответствующего поведения:
self.zURL = [zOpenPanel URL];
, поскольку вы объявили, что свойство имеет семантику копирования, будет скопирован URL-адрес, и вам все равно нужно будет опубликовать его в вашем dealloc
.