[ios] Fix weak objects implementation on Hermes #21986
Merged
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.
Why
JavaScriptWeakObject
on iOS usedWeakRef
if it was supported by the engine (only JSC as of iOS 14.5), otherwise it worked like strong-referenced object and caused memory leaks. As of React Native 0.71, we can leveragejsi::WeakObject
which is implemented on Hermes.How
Added separate implementation for weak objects on Hermes runtimes
Test Plan
Added simple native class and created a milion of instances (on the JS side) and confirmed they are getting deallocated over time