On Sep 18, 2013, at 6:53 AM, Brian Clark <ba-cl...@comcast.net> wrote:

> A follow-up as a result of more testing.
> 
> It's not actually necessary to do the read via 
> -revertToContentsOfURL:ofType:error: in a "File Access" block to solve the 
> problem I had, though I'm sure it's best to do so (and that's what I now do).
> 
> Similarly moving the file to the Trash or deleting it should probably also be 
> done in a "File Access" block, and that's what I now do to.
> 
> But there's an exception to this rule. In my app, if the displayed file is 
> marked as to be trashed, it's moved to the Trash when the window is closed in 
> the document's -close method (before calling [super close] ). But this 
> results in a hang if it's done inside a [self 
> performSynchronousFileAccessUsingBlock:^{ ... }]; block. So in this case a 
> "File Access" block apparently can't be used.

FYI: You can get help discovering the cause of hangs involving 
performSynchronousFileAccessUsingBlock (and 
performActivityWithSynchronousWaiting:usingBlock:) by doing 'po 
_NSDocumentSerializationInfo()' in the debugger.

> 
> On Sep 16, 2013, at 12:24 PM, Kevin Perry <kpe...@apple.com> wrote:
> 
>> But, I suspect the problem here is that you're not using File Coordination 
>> when reading in the contents of the new file. By not doing that, you're not 
>> giving File Coordination the hint that it needs to check back with your 
>> NSFilePresenter (the NSDocument) for its presentedItemURL. When you read in 
>> the contents of the new file you should:
>> 
>> 1) Start a "File Access" with -performSynchronousFileAccessUsingBlock: or 
>> -performAsynchronousFileAccessUsingBlock
>> 2) Create an NSFileCoordinator instance with the NSDocument as the 
>> NSFilePresenter passed in the initializer.
>> 3) Using that NSFileCoordinator, take a coordinated read of the target file
>> 4) Inside the coordinated read: read the contents of the new file 
>> (-revertToContentsOfURL:ofType:error: is probably the most correct here, as 
>> it will update -fileURL, -fileModificationDate, -fileType, change counts, 
>> and other internal state as necessary)
> 
> _______________________________________________
> 
> 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/kperry%40apple.com
> 
> This email sent to kpe...@apple.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