On 14 Sep 2013, at 21:14, Brian Clark <ba-cl...@comcast.net> wrote:

> I'm hoping someone can suggest the correct way to deal with the following 
> problem.
> 
> For an image viewing app i display a file in the usual way in an NSDocument. 
> setFileURL: is properly called by NSDocument's 
> _initWithContentsOfURL:ofType:error:.
> 
> I now want to display the next file in the folder, and move the old file to 
> the Trash. To do this I do the necessary file reading tasks and call 
> setFileURL: with the new file URL. I then move the old file to the trash 
> (using NSFileManager 's trashItemAtURL:resultingItemURL:error: but using 
> different methods gives the same result.)

What are "the necessary file reading tasks"? Rather than call -setFileURL: 
yourself, have you tried calling -revertToContentsOfURL:ofType:error: instead? 
The top of the class documentation briefly notes that it should always be used 
for re-reading documents.
> 
> Prior to 10.7 this worked fine and gave the desired result. Under 10.8, 
> shortly after I load the new file and call setFileURL: with the new file URL 
> as described above, I see a presentedItemDidMoveToURL: call with the old file 
> URL. From that point on, the document has the wrong URL associated with it.
> 
> #0    0x0000000100014cf0 in -[ImageDoc setFileURL:] at 
> /Volumes/Data/Documents/Projects/Ptah/ptah src 3.1.0/Source/ImageDoc.m:3669
> #1    0x00007fff84763b6f in __block_global_243 ()
> #2    0x00007fff842fa869 in -[NSDocument continueFileAccessUsingBlock:] ()
> #3    0x00007fff842fa432 in -[NSDocument 
> _performFileAccessOnMainThread:usingBlock:] ()
> #4    0x00007fff842ff0d7 in -[NSDocument 
> performAsynchronousFileAccessUsingBlock:] ()
> #5    0x00007fff84763b3d in __40-[NSDocument 
> presentedItemDidMoveToURL:]_block_invoke_0 ()
> #6    0x00007fff832789cf in -[NSBlockOperation main] ()
> #7    0x00007fff8324e926 in -[__NSOperationInternal start] ()
> #8    0x00007fff832560f1 in __block_global_6 ()
> #9    0x00007fff8750bf01 in _dispatch_call_block_and_release ()
> #10   0x00007fff875080b6 in _dispatch_client_callout ()
> #11   0x00007fff8750d0c8 in _dispatch_main_queue_callback_4CF ()
> #12   0x00007fff8c4b4b4c in __CFRunLoopRun ()
> #13   0x00007fff8c4b40e2 in CFRunLoopRunSpecific ()
> #14   0x00007fff8b9e0eb4 in RunCurrentEventLoopInMode ()
> #15   0x00007fff8b9e0c52 in ReceiveNextEventCommon ()
> #16   0x00007fff8b9e0ae3 in BlockUntilNextEventMatchingListInMode ()
> #17   0x00007fff8442a533 in _DPSNextEvent ()
> #18   0x00007fff84429df2 in -[NSApplication 
> nextEventMatchingMask:untilDate:inMode:dequeue:] ()
> #19   0x00007fff844211a3 in -[NSApplication run] ()
> #20   0x00007fff843c5bd6 in NSApplicationMain ()
> #21   0x0000000100063f79 in main at 
> /Volumes/Data/Documents/Projects/Ptah/ptah src 3.1.0/Source/App.m:136
> #22   0x00000001000020e4 in start ()
> 
> What is the proper way to prevent this behavior? Obviously simply calling 
> setFileURL: with the new file URL does not fully establish the the document 
> is now associated only with the new file, and that the old file should be 
> forgotten and not associated in any way with the document. I'm not explicitly 
> using NSFileCoordinator or NSFilePresenter. This is a non-sandboxed app.
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/cocoa-dev/mabdullah%40karelia.com
> 
> This email sent to mabdul...@karelia.com


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to