[Mono-osx] MonoMac: ClassHandle issue

Duane Wandless duane at wandless.net
Sat Jul 10 10:04:07 EDT 2010


Here is a test case that shows the same issue I have with an Obj-C object.
 In my real app the MyViewController object is created in obj-c.  But this
test case shows the same issue.

using System;
using MonoMac.Foundation;
using MonoMac.AppKit;
using MonoMac.ObjCRuntime;

namespace monoMain
{
    public class myApp
    {
        public static void Main()
        {
                NSApplication.Init();
                MyViewController sv = new MyViewController();
                Console.WriteLine("class handle {0}",
sv.ClassHandle.ToString("x"));
                Console.WriteLine("class name {0}", new
Class(sv.ClassHandle).Name);
                Class kls = new Class("MyViewController");
                Console.WriteLine("kls handle {0}",
kls.Handle.ToString("x"));
                Console.WriteLine("kls name {0}", kls.Name);
        }
    }

    [Register("MyViewController")]
    public class MyViewController : NSViewController
    {
        public MyViewController()  { }
    }
}


In the output I get:
class handle a0625e70
class name NSViewController
kls handle d5dbc0
kls name MyViewController

The desired output is to have MyViewController returned in both cases.  If I
use NSView as the class it does work as expected.

I modified Class.cs to print out additional info:
Registering MyViewController : NSViewController / 0xa0625e70 0xd5dbc0
Console.WriteLine ("Registering {0} : {1} / 0x{2} 0x{3}", name, parent_name,
parent.ToString("x"), handle.ToString("x"));

So when the MyViewController is created it appears that its ClassHandle is
incorrectly set to its super class handle.  I did take it a step further and
created MyViewController2 : MyViewController.  And when sv.ClassHandle is
printed out it is NSViewController's handle.

Thanks,
Duane
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-osx/attachments/20100710/e7e66be9/attachment.html 


More information about the Mono-osx mailing list