[csharp] Implement static methods for callbacks so they work on aot on iOS, use YogaRef to store pointer to managed YogaNode

This commit is contained in:
Rui Marinho
2017-02-10 15:45:15 +00:00
parent b7fbe1c986
commit f90633cec5
3 changed files with 65 additions and 9 deletions

View File

@@ -37,9 +37,31 @@ namespace Facebook.Yoga
throw new InvalidOperationException(message);
}
};
#if __IOS__
Native.YGInteropSetLogger(ManagedLogger);
#else
Native.YGInteropSetLogger(_managedLogger);
#endif
_initialized = true;
}
}
#if __IOS__
delegate void ManagedLoggerCallback(YogaLogLevel level, string message);
[ObjCRuntime.MonoPInvokeCallback(typeof(ManagedLoggerCallback))]
public static void ManagedLogger(YogaLogLevel level, string message)
{
if (Logger != null)
{
Logger(level, message);
}
if (level == YogaLogLevel.Error)
{
throw new InvalidOperationException(message);
}
}
#endif
}
}