D言語からObjective-CとCocoaAPIを使いたい

D言語から performSelector を使用する

D言語から Objective-C NSObject performSelector 機能を使用します。


(base) hidhok % dmd -L-framework -LCocoa selector.d
(base) hidhok % ./selector 
Hello World ! ... performSelector Test
(base) hidhok %
                

サンプルコード

Powered by Prism


/**
 *      selector.d   Version 0.0.1       performSelector test
 *          dmd -L-framework -LCocoa selector.d
 */
import core.attribute : optional, selector;
import std.stdio : printf;

void main() {
    Obj obj = Obj.alloc.init;
    SEL method = sel_registerName("Print");
    obj.perform = method;
}

extern(Objective-C)
class Obj : NSObject {
    override static Obj alloc() @selector("alloc");
    override Obj init() @selector("init");
    void Print() @selector("Print") {
        printf("Hello World ! ... performSelector Test\n");
    }
}

struct objc_selector;
alias SEL = objc_selector*;
extern (C) SEL sel_registerName(in char* str);

extern(Objective-C)
extern class NSObject {
    static NSObject alloc() @selector("alloc");
    NSObject init() @selector("init");
    SEL perform(SEL) @selector("performSelector:");
    void release() @selector("release");
}