Alternatives to ProtocolObject
#686
Labels
A-objc2
Affects the `objc2`, `objc2-exception-helper` and/or `objc2-encode` crates
enhancement
New feature or request
question
Further information is requested
I suspect it may be possible for us to basically never need to use
ProtocolObject
, but instead rely on the compiler to do the work of figuring out which traits are valid for which objects.I've experimented a bit with
#[derive(CoercePointee)]
in bb1ae6f, to show that some of it can indeed work through that. If we also changed message sending such that&dyn NSObjectProtocol
translates toNonNull<AnyObject>
, then using protocol objects would look very, very similar to normal Rust code (methods take&dyn MyProtocol
and end up returningRetained<dyn MyProtocol>
).One worry is that the vtable may be included in the final binary, that would have to be thoroughly tested beforehand.
We also need to do a more detailed soundness analysis before all this is over.
Another venue to investigate is the relationship between
Message
andRefEncode
, and if we could possibly make theMessage
trait bedyn
-compatible?The text was updated successfully, but these errors were encountered: