Add option to enable or disable weak memory cache for SDImageCache #2379
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.
New Pull Request Checklist
I have read and understood the CONTRIBUTING guide
I have read the Documentation
I have searched for a similar pull request in the project and found none
I have updated this branch with the latest master to avoid conflicts (via merge from master or rebase)
I have added the required tests to prove the fix/feature I am adding
I have updated the documentation (if necessary)
I have run the tests and they pass
I have run the lint and it passes (
pod lib lint
)This merge request fixes / reffers to the following issues: #2377
Pull Request Description
Reason
In the previous #2228 , we introduce a secondary weak memory cache for
SDImageCache
. Which may solve #791 case that aUIImage
instance is hold by other alive instance by strong reference, however, when we purge the memory cache, we can not investigate this and cause re-query disk cahce or re-download from network.I think that feature's aim is correct and it actually solve this problem. However, this behavior should be controlled by user but not hidden in the implementation detail. Because a weak maptable which may delay intance dealloc time at race time (See this blog). And a extra lock to keep thread-safe which may a little impact the performance. So it's greate that user can decide to enable/disable this feature.
The default options is ON, since most of cases this works does not cause any problem.