Thanks Jacob! I tried using unsafeBitCast, but it fails with the following: 
“fatal error: can't unsafeBitCast between types of different sizes”. I 
considered wrapping every call in a closure that calls objc_msgSend(), but 
alas, that’s not exposed to Swift. I have another approach in mind, so I’ll try 
that next.


Jeff Kelley

slauncha...@gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> | 
jeffkelley.org <http://jeffkelley.org/>
> On Nov 19, 2016, at 1:58 AM, Jacob Bandes-Storch <jtban...@gmail.com> wrote:
> 
> I imagine unsafeBitCast would be the way to go here. But are you assuming 
> that all of the instance methods have type "(Foo) throws -> Void" ? Or do you 
> somehow want to dynamically use the type information?
> 
> Jacob
> 
> On Fri, Nov 18, 2016 at 10:37 PM, Jeff Kelley via swift-users 
> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
> Hello,
> 
>       I’m trying to enumerate the methods of a class in Swift using the 
> Objective-C runtime. Everything is working fine so far, except for the very 
> last step. Suppose I have a Swift class like this:
> 
> class Foo: SomeSuperclass {
>     
>     @objc func bar() {
>         print("Hello, World!")
>     }
>     
> }
> 
>       Using the Objective-C runtime methods, I can get the method with 
> class_copyMethodList and then get to the method’s implementation using 
> method_getImplementation. However, what I need to do next is to stick this 
> into a tuple that looks like this:
> 
> typealias FooEntry = (fooClass: SomeSuperclass.Type, methods: [(String, (Foo) 
> throws -> Void)])
> 
>       For now, the workaround is to make a static variable that returns all 
> of the entries:
> 
>     static var allEntries = {
>         return [
>             ("bar", bar),
>         ]
>     }
> 
>       Is there any way to go from the raw IMP that I get back from the 
> runtime to the Swift type so I can construct this list dynamically?
> 
> 
> Jeff Kelley
> 
> slauncha...@gmail.com <mailto:slauncha...@gmail.com> | @SlaunchaMan 
> <https://twitter.com/SlaunchaMan> | jeffkelley.org <http://jeffkelley.org/>
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org <mailto:swift-users@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-users 
> <https://lists.swift.org/mailman/listinfo/swift-users>
> 
> 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to