XML ファイルをフォーマットするドキュメント ベースのアプリケーションがあります。
ドキュメントの書き込みと読み取りは、私の NSDocument サブクラスで行われます
- (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError
- (BOOL)readFromURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError
しかし、ファイルが無効な XML である場合、私のアプリは単純にクラッシュします。
だから私は実装しました:
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
if(safe){open new document using .....makeDocumentWithContentsOfURL:......}
else{present alert}
}
しかし、これには明らかな副作用がたくさんあります。他のいくつかのメソッドをオーバーライドする必要があります。
-(BOOL)writeSafelyToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName forSaveOperation:(NSSaveOperationType)saveOperation error:(NSError **)outError
{
return [self writeToURL:absoluteURL ofType:typeName error:outError];
//return YES;
}
ここにビーチボール カーソルが表示され、最終的にアプリケーションが応答しなくなります。
ドキュメントを開く前に検証するより良い方法はありますか?