On Thursday, 21 December 2017 at 17:56:54 UTC, mrphobby wrote:

Thanks for sharing! Your solution is more complete for sure. I think I will borrow a few ideas here :)

I've been playing around with this a bit and it works pretty well. One thing that bothers me is the handling of NSString. I came up with the following class to handle strings and make sure they do not leak. But maybe there is a nicer way to handle this in D?

class NSStringRef {
public:
    this(string s) {
str_ = NSString.alloc.initWithBytes(cast(immutable(ubyte)*) s.ptr,
                                            s.length,
NSStringEncoding.NSUTF8StringEncoding);
    }

    ~this() {
        str_.release();
    }

    NSString str() @property {
        return str_;
    }

private:
    NSString str_;
}

And then you have to use it like this:

    NSStringRef s = new NSStringRef("Hello");
    NSLog(s.str);

Ideally I would like to write code more like this (without leaking the NSString):

    NSLog("Hello".nsstring);

Surely this must be possible in D somehow? :)

Reply via email to