ビューのコンテンツをPDFファイルに保存しようとしています。表示されるコードは、NSViewから継承するクラス内にあります。
- (IBAction) savePDF: (id) sender
{
__block NSSavePanel* panel=[NSSavePanel savePanel];
[panel setAllowedFileTypes: [NSArray arrayWithObject: @"pdf"]];
[panel beginSheetModalForWindow: [self window] completionHandler: ^(NSInteger result)
{
if(result==NSOKButton)
{
NSCAssert(panel!=nil,@"panel is nil");
NSData* data=[self dataWithPDFInsideRect: [self bounds]];
NSError* error;
BOOL successful=[data writeToURL: [panel URL] options: 0 error: &error];
if(!successful)
{
NSAlert* alert=[NSAlert alertWithError: error];
[alert runModal];
}
}
}];
panel=nil;
}
メソッドはメニューでトリガーされます。
問題は、アサーションが失敗することです。
NSCAssert(panel!=nil,@"panel is nil");
NSSavePanelポインターを__blockと宣言した場合でも、なぜですか?