diff --git a/area_darwin.go b/area_darwin.go index a767411..ecefc76 100644 --- a/area_darwin.go +++ b/area_darwin.go @@ -64,10 +64,8 @@ func areaInScrollView(scrollview C.id) C.id { func makeArea(parentWindow C.id, alternate bool) C.id { area := objc_alloc(_goArea) -println(area) area = objc_msgSend_rect(area, _initWithFrame, 0, 0, 100, 100) -println("out") // TODO others? area = newAreaScrollView(area) addControl(parentWindow, area) @@ -78,7 +76,7 @@ println("out") var ( _NSView = objc_getClass("NSView") - _NSView_Class = C.object_getClass(_NSView) + _NSView_Class = C.Class(unsafe.Pointer(_NSView)) ) func makeAreaClass(name string) (C.Class, error) { diff --git a/bleh_darwin.m b/bleh_darwin.m index fb57bb3..ac6182a 100644 --- a/bleh_darwin.m +++ b/bleh_darwin.m @@ -93,7 +93,6 @@ struct xrect objc_msgSend_stret_rect_noargs(id obj, SEL sel) id _objc_msgSend_rect(id obj, SEL sel, int64_t x, int64_t y, int64_t w, int64_t h) { -printf("%s\n", class_getName(objc_getMetaClass("goArea"))); return objc_msgSend(obj, sel, OurRect()); } diff --git a/delegate_darwin.go b/delegate_darwin.go index c60689d..7f14d04 100644 --- a/delegate_darwin.go +++ b/delegate_darwin.go @@ -64,9 +64,7 @@ func mkAppDelegate() error { if err != nil { return fmt.Errorf("error adding NSApplication delegate buttonClicked: method (to handle button clicks): %v", err) } - // TODO using objc_new() causes a segfault; find out why - // TODO make alloc followed by init (I thought NSObject provided its own init?) - appDelegate = objc_alloc(objc_getClass(_goAppDelegate)) + appDelegate = objc_new(objc_getClass(_goAppDelegate)) return nil } @@ -111,7 +109,10 @@ func appDelegate_buttonClicked(self C.id, sel C.SEL, button C.id) { // this actually constructs the delegate class var ( - _NSObject_Class = C.object_getClass(_NSObject) + // objc_getClass() says it returns an id but it's actually a Class + // thanks to Psy| in irc.freenode.net/##objc + // don't call object_getClass() on this then, as I originally thought — that returns the /metaclass/ (which we don't want, and in fact I wasn't even aware we COULD subclass the metaclass directly like this) + _NSObject_Class = C.Class(unsafe.Pointer(_NSObject)) ) func makeDelegateClass(name string) (C.Class, error) {