Bug 29461 - [Binding] NSInvocation APIs
Summary: [Binding] NSInvocation APIs
Status: CONFIRMED
Alias: None
Product: Xamarin.Mac
Classification: Desktop
Component: Library (Xamarin.Mac.dll) (show other bugs)
Version: Master
Hardware: PC Mac OS
: Low enhancement
Target Milestone: master
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2015-04-28 09:13 UTC by Chris Hamons
Modified: 2017-03-09 02:53 UTC (History)
3 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Chris Hamons 2015-04-28 09:13:49 UTC
[DllImport ("/usr/lib/libobjc.dylib", EntryPoint="objc_msgSend")]
		public extern static global::System.IntPtr IntPtr_objc_msgSend_IntPtr (IntPtr receiver, IntPtr selector, IntPtr arg1);
 
		[DllImport ("/usr/lib/libobjc.dylib", EntryPoint="objc_msgSend")]
		public extern static global::System.IntPtr IntPtr_objc_msgSend_IntPtr_nint (IntPtr receiver, IntPtr selector, IntPtr arg1, nint arg2);
 
 
 
		public unsafe override void DidFinishLaunching (NSNotification notification)
		{
			mainWindowController = new MainWindowController ();
			mainWindowController.Window.MakeKeyAndOrderFront (this);
 
			Selector doItSel = new Selector ("DoIt:");
			IntPtr p = IntPtr_objc_msgSend_IntPtr (this.Class.Handle, Selector.GetHandle ("instanceMethodSignatureForSelector:"), doItSel.Handle);
			NSMethodSignature m = Runtime.GetNSObject<NSMethodSignature> (p);
 
			IntPtr inv = IntPtr_objc_msgSend_IntPtr (Class.GetHandle (typeof (NSInvocation)), Selector.GetHandle ("invocationWithMethodSignature:"), m.Handle);
			NSInvocation i = Runtime.GetNSObject<NSInvocation> (inv);
			i.Target = this;
			i.Selector = doItSel;
 
			int ft = 42;
			IntPtr_objc_msgSend_IntPtr_nint (i.Handle, Selector.GetHandle ("setArgument:atIndex:"), new IntPtr (&ft), 2);
 
			i.Invoke ();
		}
 
		[Export ("DoIt:")]
		public void DoIt (int i)
		{
			Console.WriteLine ("DoIt:" + i);
		}
	}

Note You need to log in before you can comment on or make changes to this bug.