Пример #1
0
 static internal void OverrideRetainAndRelease(IntPtr @class)
 {
     // TODO: implement overriding of platform types too.
     lock (lock_obj) {
         if (ReleaseTrampolineFunctionPointer == IntPtr.Zero)
         {
             retainTrampoline  = new RetainTrampolineDelegate(RetainTrampoline);
             releaseTrampoline = new ReleaseTrampolineDelegate(ReleaseTrampoline);
             RetainTrampolineFunctionPointer  = Marshal.GetFunctionPointerForDelegate(retainTrampoline);
             ReleaseTrampolineFunctionPointer = Marshal.GetFunctionPointerForDelegate(releaseTrampoline);
         }
     }
     Class.class_addMethod(@class, Selector.RetainHandle, RetainTrampolineFunctionPointer, "@@:");
     Class.class_addMethod(@class, Selector.ReleaseHandle, ReleaseTrampolineFunctionPointer, "v@:");
 }
Пример #2
0
		static internal void OverrideRetainAndRelease (IntPtr @class)
		{
			// TODO: implement overriding of platform types too.
			lock (lock_obj) {
				if (ReleaseTrampolineFunctionPointer == IntPtr.Zero) {
					retainTrampoline = new RetainTrampolineDelegate (RetainTrampoline);
					releaseTrampoline = new ReleaseTrampolineDelegate (ReleaseTrampoline);
					RetainTrampolineFunctionPointer = Marshal.GetFunctionPointerForDelegate (retainTrampoline);
					ReleaseTrampolineFunctionPointer = Marshal.GetFunctionPointerForDelegate (releaseTrampoline);
				}
			}
			Class.class_addMethod (@class, Selector.Retain, RetainTrampolineFunctionPointer, "@@:");
			Class.class_addMethod (@class, Selector.Release, ReleaseTrampolineFunctionPointer, "v@:");
		}