On 2014-10-27 19:03, Christian Schneider wrote:
Can somebody with a greater d-objc knowledge have a look at this example
project and tell this naive D-noob what he is missing?

https://github.com/DiveFramework/DiveFramework/tree/master/Examples/Tableview


I am pretty sure that it has something to do with memory management and
ARC. First it all starts up right, but then a delegate method get's
called in the wild and some memory segmentation is occurring calling
objectAtIndex, which is called on very different objects on multiple
runs, and I cannot get any closer to the real issue.

NSMutableArray _applications ;

is the main culprit, in this I am trying to put some NSObject subclass
objects. I have to admit that my mind is all Objective-C and very little
D yet, and probably the solution is very simple. What I have further
found is, that the crash occurs in relation to the visible table cells.
As soon as a view for an invisible cell is requested, the seg fault
occurs. I am trying to elaborate a TableView example using View based
cells.

To compile the program, you only need to execute "dub" in the
Examples/Tableview directory, of course assuming you have the latest
d-objc branch dmd installed and dub (and Xcode, I am using 5.1.1 but 6
should work just as well).

I tried running your code and could observe the behavior. Although I have not been able to figure you why it behaves like this. In general there are a couple of things to think of and watch out for when interfacing between D and Objective-C :

* The D compiler does not support any form of ARC, it's back to using retain/release

* When allocating memory with the GC in D and passing it to Objective-C (or C for that matter) you have to make sure there is still a root pointing to the memory. This can either be a variable that is still in scope or by explicitly adding a new root by calling core.GC.addRoot.

I don't know if any of the above is the actual problem, but it could be. I would recommend trying to contact Michel Fortin how original implemented D/Objective-C.

BTW, There is a tool, DStep [1], that can automatically generate bindings for Objective-C code.

[1] https://github.com/jacob-carlborg/dstep

--
/Jacob Carlborg
  • Re: D/Objective-C 64bit Christian Schneider via Digitalmars-d-announce
    • Re: D/Objective-C 64bi... Jacob Carlborg via Digitalmars-d-announce
      • Re: D/Objective-C ... Christian Schneider via Digitalmars-d-announce
        • Re: D/Objectiv... Jacob Carlborg via Digitalmars-d-announce
          • Re: D/Obje... Christian Schneider via Digitalmars-d-announce
            • Re: D... Jacob Carlborg via Digitalmars-d-announce
              • R... John Colvin via Digitalmars-d-announce
                • ... Jacob Carlborg via Digitalmars-d-announce
              • R... Christian Schneider via Digitalmars-d-announce
                • ... Jacob Carlborg via Digitalmars-d-announce
                • ... Christian Schneider via Digitalmars-d-announce
                • ... Jacob Carlborg via Digitalmars-d-announce

Reply via email to