Exemple #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.Retain, RetainTrampolineFunctionPointer, "@@:");
			Class.class_addMethod (@class, Selector.Release, ReleaseTrampolineFunctionPointer, "v@:");
		}