[Concurrency] Implement a narrow carve out in the isolation override checking for NSObject.init().
#75748
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.
Overriding
NSObject.init()within a@MainActor-isolated type is difficult-to-impossible, especially if you need to call an initializer from an intermediate superclass that is also@MainActor-isolated. Opt-out tools likeMainActor.assumeIsolatedcannot be applied to things like stored property initialization andsuper.init(), making the issue extremely difficult to work around.This carve-out won't admit a runtime data-race safety hole, because dynamic isolation checks will be inserted in the @objc thunks under
DynamicActorIsolation, and direct calls will enforce@MainActoras usual.Resolves: #75732, rdar://133349184