Avoid attaching removefile callbacks when delegate does not implement functions #1070
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous ObjC implementation of
-[NSFileManager removeItemAtPath:]
only attached callbacks to theremovefile_state_t
when the delegate was present and it implemented the equivalent functions. However, the new Swift implementation unconditionally attaches callbacks that simply return "default" values when no delegate responds. This causes a behavioral difference inremovefile
when removing items that are not materialized (ex. remote iCloud documents that do not currently exist on disk). Calling the confirm callback requires iterating the children of the removed directory and performing this iteration causesremovefile
to materialize the file on-disk. We should avoid this materialization when no callback exists - this change does this by only attaching callbacks to theremovefile_state_t
when we have a delegate that actually cares.