
Avec un meilleur interfaçage à Objective-C
La D Language Foundation annonce la disponibilité en téléchargement de la version 2.085.0 de DMD – le compilateur de référence du langage D. Au menu : des avancées dans l’interfaçage avec le langage Objective-C d’Apple ; du nouveau avec le ramasse-miettes et des améliorations au niveau de l’interfaçage avec la bibliothèque standard du langage C++.


Code Objective-C : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | extern (Objective-C) class NSObject { static NSObject alloc() @selector("alloc"); NSObject init() @selector("init"); void release() @selector("release"); } extern (Objective-C) class Foo : NSObject { override static Foo alloc() @selector("alloc"); override Foo init() @selector("init"); int bar(int a) @selector("bar:") { return a; } } void main() { auto foo = Foo.alloc.init; scope (exit) foo.release(); assert(foo.bar(3) == 3); } |
La D Language Foundation prévient à ce propos que « pour mieux faciliter l'interaction entre les deux langues, ces classes ont un comportement légèrement modifié. Toutes les méthodes statiques et finales d'une classe extern (Objective-C) sont virtuelles. »
L’autre nouveauté en ce qui concerne l’interfaçage avec le langage Objective-C est qu’il est désormais possible de déclarer des variables d’instance au sein de classes Objective-C – ainsi qu’à l’intérieur d’une méthode contenue dans une classe Objective-C – pour effectuer un appel spécial.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | extern (Objective-C) class NSObject { void release() @selector("release"); } extern (Objective-C) class Foo : NSObject { // instance variable int bar; int foo() @selector("foo") { return 3; } int getBar() @selector("getBar") { return bar; } } extern (Objective-C) class Bar : Foo { static Bar alloc() @selector("alloc"); Bar init() @selector("init"); override int foo() @selector("foo") { // super call return super.foo() + 1; } } |

La dernière mouture du compilateur de référence du langage D vient avec deux améliorations en ce qui concerne l’interfaçage avec la bibliothèque standard du C++. Noter à ce propos que les programmes D pourront désormais allouer de la mémoire à partir du heap C++, ce, en s’appuyant sur les opérateurs new et delete. Enfin, la version 2.085 donne l’accès aux conteneurs de la STL par le biais de la classe std::allocator<T> exposée via un module C++.
Source : dlang
Et vous ?


Voir aussi :


Vous avez lu gratuitement 896 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.