This constructor is invoked by the runtime infrastructure (ObjCRuntime.GetNSObject (System.IntPtr)) to create a new managed representation for a pointer to an unmanaged Objective-C object. You should not invoke this method directly, instead you should call the GetNSObject method as it will prevent two instances of a managed object to point to the same native object.