我正在尝试将TestFlightSdk集成到我使用MonoTouch制作的应用程序中。
我试图以一种由TestFlightSdk获取的方式在我的应用程序中实现日志记录。据称它会自动获取NSLog
ged文本,但是我似乎找不到正确的代码组合来添加到用C#/MonoTouch编写的自己的应用程序中,这样做是一样的。
我尝试过的
Console.WriteLine("...");
Debug.WriteLine("...");
(但是我认为这只是调用Console.WriteLine
)NSlog
的支持,但是这使我的应用程序崩溃,因此显然我做错了什么(如果这是前进的方式,我会问一个新问题。)MonoTouch内置有什么可以通过NSLog写入日志消息的东西,以便可以与TestFlightSdk一起使用?还是我必须为NSLog滚动自己的包装器?
为了自己实现NSLog,我添加了以下内容:
public static class Logger
{
[DllImport("/System/Library/Frameworks/Foundation.framework/Foundation")]
private extern static void NSLog(string format, string arg1);
public static void Log(string message)
{
NSLog("%s", message);
}
}
(我从另一个SO问题How to I bind to the iOS Foundations function NSLog中获得了上面的代码段。)
但这会使我的应用程序崩溃,并出现SIGSEGV错误。
最佳答案
using System;
using System.Runtime.InteropServices;
using Foundation;
public class Logger
{
[DllImport(ObjCRuntime.Constants.FoundationLibrary)]
private extern static void NSLog(IntPtr message);
public static void Log(string msg, params object[] args)
{
using (var nss = new NSString (string.Format (msg, args))) {
NSLog(nss.Handle);
}
}
}
关于xamarin.ios - MonoTouch,NSLog和TestFlightSdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204160/