zURL声明如下:为什么我无法访问此实例变量?
.H:
@interface PanelController : NSWindowController <NSWindowDelegate>
{
NSURL *zURL;
}
@property (nonatomic, copy) NSURL *zURL;
.M:
@synthesize zURL;
在一个IBAction为我:
- (IBAction)openBrowser:(id)sender {
NSOpenPanel *zOpenPanel = [NSOpenPanel openPanel];
[zOpenPanel setCanChooseFiles: TRUE];
[zOpenPanel setCanChooseDirectories: TRUE];
[zOpenPanel setAllowsMultipleSelection: TRUE];
[zOpenPanel setLevel:CGShieldingWindowLevel()];
NSInteger zIntResult = [zOpenPanel runModal];
if (zIntResult == NSFileHandlingPanelCancelButton) {
return;
}
// zURL set here
zURL = [NSURL alloc];
zURL = [zOpenPanel URL];
NSLog(@"url = %@", zURL); // works
NSString *zStr = [zURL absoluteString];
_fileField.stringValue = zStr;
[_importButton setEnabled:TRUE];
[self openPanel];
}
在接下来的IBAction为:
NSLog(@"url = %@", zURL); // EXC_BAD_ACCESS error
你在哪里申报zURL? –
我编辑我的问题,包括乔治信息.. –
首先 - 摆脱第一个[NSURL alloc]行。这是内存泄漏。第二次使用“self.zURL = [zOpenPanel URL]”。当前你直接设置实例变量的方式。使用self.zURL,您将通过将复制URL的属性访问器。 –