On 2017-12-13 16:59, mrphobby wrote:

I have another question about your Webkit test example... I see that you are doing some elaborate setup in order to bind the application delegate methods. Can you explain a bit about why you are doing it in this way instead of using the @selector attribute in a class?

That is to register the methods with the Objective-C runtime. Currently the @selector attribute can only be used on methods that are already implemented in Objective-C. If a need to implement a new method or override an existing method in a subclass, then it's necessary to manually register that method with the runtime.

This is because the full implementation of DIP43 [1] is not done/merged yet.

But trust me, this is a lot simpler than without any compiler support at all. Then you would need to know details of the ABI to call Objective-C methods.

The methods I've added in the WebKit example are methods that will only be called as callbacks by the Objective-C code. If I want to call them myself I would need the @selector attribute as well, in addition to the manual registering.

The thing is that I'm currently attempting to get it to work using the "easy" way using @selector but the methods in my AppDelegate class are not called. Not sure why that is, but I probably screwed something up :)

Yes, see above.

[1] https://wiki.dlang.org/DIP43

--
/Jacob Carlborg

Reply via email to