【发布时间】:2011-09-20 20:56:45
【问题描述】:
在我的代码中,我在应用程序委托的头文件中创建了一个名为 fromURL 的 NSURL 对象。
NSURL *fromURL;
这是我设置它的时候:
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:NO];
[openDlg setCanChooseDirectories:YES];
[openDlg setCanCreateDirectories:YES];
[openDlg setPrompt:@"Select"];
if ([openDlg runModal] == NSOKButton )
{
fromURL = [openDlg URL];
}
这是我的问题。当我设置它时,我可以在它创建后立即 NSLog 设置的内容,但下次我尝试从中获取信息时,它会显示 EXC_BAD_ACCESS。我打开了僵尸,它几乎在我设置后立即变成了僵尸。
这怎么会立即被释放?!?
【问题讨论】:
-
分配/初始化的目的是什么?它不会做任何事情。
-
我很惊讶它允许你使用“init”方法来初始化一个 NSURL。您必须使用 initWithString: 方法并为 NSURL 提供一个有效的 URL。
-
即使我摆脱了初始化的东西,它仍然不起作用。我最初把它放在适当的位置是因为我认为它可能会解决我的问题。我从一个名为 openDLG 的 NSOpenPanel 对象设置 URL。这是我的设置方式: fromURL = [openDlg URL];如果我 NSLog fromURL 在此之后立即打印该值,但如果我做任何其他事情(例如设置另一个对象)然后尝试 NSLog fromURL 它说它已经被解除分配。
标签: objective-c nsurl memory-management