[RLMSchema] Don't iterate through runtime classes unnecessarily #8721
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.
In my application, there are quite a few crashes with an unclear stack trace (see the screenshot). During my investigation, I found out what is happening:
deleteData(forType:)
. Yes, I am aware of the crosslink issue; this is not that situation. I will look into that MR later with my experience on how to fix the deletion problem.deleteData(forType:)
tries to determine whether to clear or delete the table.-schemaForClassName (RLMSchema)
.objectSchemaByName
after+(instancetype)schemaWithObjectClasses
), and none of them includes the one I'm deleting, which makes sense.+classForString (RLMSchema)
, which then goes toRLMRegisterClassLocalNames
and iterates through all classes. And I remind you that I have explicitly specified the ones I am using.RLMIsObjectSubclass
.class_getSuperclass
, something goes wrong.I understand that it would be good to figure out which specific class is causing this issue, but I don't have that capability. However, it seems that this MR will eliminate the need to call class_getSuperclass unnecessarily.
![389705538-fd872a2c-81bf-4bba-bff1-09cd78a838a2](https://private-user-images.githubusercontent.com/10786093/392034964-f5caa6bd-51d3-4df7-ad59-6224def69cd9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1NTY2NDksIm5iZiI6MTczOTU1NjM0OSwicGF0aCI6Ii8xMDc4NjA5My8zOTIwMzQ5NjQtZjVjYWE2YmQtNTFkMy00ZGY3LWFkNTktNjIyNGRlZjY5Y2Q5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDE4MDU0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM2YjZkOGY3N2Q2Y2VkNTg3OTZlNTE3YzRhNGNlZDI4MzVmODE0ZjBhYWJmNWU4ZjFlMzE5YmY3ODczYjU0MGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.j8UvMk5cFeEc9fYK-rcUuETYOdTsMTJLCdrUQ1iNo-k)