このコードを使用して、2番目のクラスにファイルを指定されたパスに保存するように指示します。
if ([defaults boolForKey:@"SaveAutomatically"]) {
basepath = [defaults objectForKey:@"SaveAutomaticallyPath"];
basepath = [basepath stringByAppendingPathComponent:[defaults objectForKey:@"SaveAutomaticallyName"]];
}
[NSThread detachNewThreadSelector:@selector(saveTo:) toTarget:controller withObject:basepath];
したがって、saveTo:
メソッドが呼び出されます。最初に、指定されたパスに問題がないかどうかを確認します
if (![[[aPath pathExtension] lowercaseString] isEqualToString:@"icns"]) {
aPath = [aPath stringByAppendingPathExtension:@"icns"];
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath]) {
[delegate error:@"File exists already."];
[self performSelectorOnMainThread:@selector(fs)
withObject:nil waitUntilDone:NO];
}
次に、いくつかの処理を実行して:を作成しますCGImageDestinationRef
。
NSURL *fileURL = [NSURL fileURLWithPath:aPath];
CGImageDestinationRef dr = CGImageDestinationCreateWithURL((CFURLRef)fileURL, kUTTypeAppleICNS , count, NULL);
if (!dr) {
[delegate error:@"Unable to save icon file."];
[self performSelectorOnMainThread:@selector(fs)
withObject:nil waitUntilDone:NO];
return;
}
dr
毎回ゼロです。saveTo
を使用してパスを指定するNSSavePanel
と、文句はなく、正常に動作します。パスにログインしようとしましsaveTo:
たが、正常に機能します(例:/Users/Home/Desktop/Result.icns)。
つまり、上記のコードを/Users/Home/Desktop/Result.icnsに保存すると失敗しますが、を使用して同じパスに保存することをユーザーに決定させると、NSSavePanel
問題はありません。
SandBoxingを使用しています。どうすればこれを解決できますか?