[swift-users] unsafeBitCast to Unimplemented Class

Saagar Jha saagar at saagarjha.com
Tue Feb 7 23:37:12 CST 2017


Saagar Jha

> On Feb 6, 2017, at 10:57 PM, Andrew Trick <atrick at apple.com> wrote:
> 
> 
>> On Feb 6, 2017, at 8:51 PM, Dave Abrahams <dabrahams at apple.com> wrote:
>> 
>> 
>> on Mon Feb 06 2017, Andrew Trick <atrick-AT-apple.com> wrote:
>> 
>>> Is a missing declaration a use case that needs to be supported?
>> 
>> I couldn't say.
>> 
>>> Wouldn’t it be more proper to use selector based dispatch in those
>>> cases?
>> 
>> Example, please?  I don't know what that means, though I probably should.
>> 
>> -- 
>> -Dave
> 
> I phrased that as a question because I'm the last person who should be giving advice here... What I had in mind is this:
> 
> if ([self isKindOfClass:NSClassFromString(@“Bar”)]) {
>  self.perform(@selector(FakeBarProtocol.foo))
> }
> 
> It's not type safe, but it's a lot better than outright lying about the reference's dynamic type.
> 
> Of course, the root problem is that Bar's declaration is unavailable, and that's not a normal, expected thing.

Yep, it’s not–that’s why I need to go through this trouble :) My plugin is loaded at runtime, so the headers are the best I’ve got (though if you’ve got a way to perform a stricter check, I’m all ears!) Until then, all of these methods appear to be sugarcoating around perform(selector:)–is there any “preferred” way to do this?

Also, class_getName(_:) seems to return a UnsafePointer<Int8>, is this just a C-style string? Should I use this over NSStringFromClass or isKindOfClass?

> 
> -Andy
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170207/b4360fa0/attachment.html>


More information about the swift-users mailing list