> I have an NSDocument, and in order to save it, I override the method:
> -
> saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo
> :
>
> In order not to lose the original file until I am sure saving was
> completed properly, I save in a temporary file, and when this is done,
> I delete the original file, and rename my temporary file.

Aren't you re-inventing the wheel here? Doesn't the framework already
do this?

> On 11 Jan 2008, at 10:47, Thomas Thiriez wrote:
> >> I have an NSDocument, and in order to save it, I override the method:
>> -
>> saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo
>> :
>>
>> In order not to lose the original file until I am sure saving was
>> completed properly, I save in a temporary file, and when this is
>> done,
>> I delete the original file, and rename my temporary file.>
> Aren't you re-inventing the wheel here? Doesn't the framework
> already do this?

Yes, the framework does this in -[NSDocument writeSafelyToURL:..].
Using FSExchangeObjects doesn't result in the problem the OP mentions,
but the temp file and destination file have to reside on the same
volume. I had to write my own implementation of writeSafelyToURL:
yesterday since 10.5's safe saving is broken.

> On Jan 11, 2008 11:24 AM, Adam R. Maxwell <amaxwell...> wrote:>> Yes, the framework does this in -[NSDocument writeSafelyToURL:..].
>> Using FSExchangeObjects doesn't result in the problem the OP mentions,
>> but the temp file and destination file have to reside on the same
>> volume. I had to write my own implementation of writeSafelyToURL:
>> yesterday since 10.5's safe saving is broken.>
> Please do elaborate. This is important to one of my projects, and I
> haven't experienced any issues with safe saving on 10.5.

In our case, this appears related to extended attributes on AFP volumes. I came up with a workaround that's now used as a fallback if we're on Leopard and NSDocument fails to save the file, but I'm not very enthusiastic about this. E-mail offlist and I'll send a link to the code (BSD license).