init
新しいドキュメントを作成するときと、保存されたドキュメントを開くときの両方で呼び出されるメソッドを試してください。制限に達した場合は、単純に nil を返します。ただし、これを試していないため、同じエラーが表示される可能性があります。
- (id)init {
if([[NSDocumentController documents] count] >= DOCUMENT_LIMIT) {
[self release];
return nil;
}
...
}
同じエラーが表示される場合は、カスタム NSDocumentController を使用できます。あなたの実装は、開いているドキュメントの数をチェックし、制限でメッセージを表示し、それ以外の場合は通常の実装を呼び出します。
- (id)openUntitledDocumentAndDisplay:(BOOL)displayDocument error:(NSError **)outError {
if([[self documents] count] >= DOCUMENT_LIMIT) {
// fill outError
return nil;
}
return [super openUntitledDocumentAndDisplay:displayDocument error:outError];
}
- (id)openDocumentWithContentsOfURL:(NSURL *)absoluteURL display:(BOOL)displayDocument error:(NSError **)outError {
NSDocument *doc = [self documentForURL:absoluteURL];
if(doc) { // already open, just show it
[doc showWindows];
return doc;
}
if([[self documents] count] >= DOCUMENT_LIMIT) {
// fill outError
return nil;
}
return [super openDocumentWithContentsOfURL:absoluteURL display:displayDocument];
}