JSON.NET:用MonoTouch的不工作“跑出2型蹦床的”

问题描述:

我曾尝试JSON.NET和MonoTouch的端口在https://github.com/ayoung/Newtonsoft.Json但得到这个序列化错误:JSON.NET:用MonoTouch的不工作“跑出2型蹦床的”

Ran out of trampolines of type 2 in '/private/var/mobile/Applications/A901C3E6-D9AB-44AF-AA13-6B6E44467BAE/StaffRostering.app/mscorlib.dll' (128) 

Stacktrace: 

at Newtonsoft.Json.Serialization.DefaultContractResolver.GetParametrizedConstructor (System.Type) [0x00009] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:336 
at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract (System.Type) [0x000ae] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:310 
at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract (System.Type) [0x000b0] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:675 
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue (TKey) <0x000bf> 
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get (TKey) <0x00173> 
at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract (System.Type) [0x00011] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/DefaultContractResolver.cs:196 
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.GetContractSafe (object) [0x00008] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs:86 
at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize (Newtonsoft.Json.JsonWriter,object) [0x00011] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/Serialization/JsonSerializerInternalWriter.cs:70 
at Newtonsoft.Json.JsonSerializer.SerializeInternal (Newtonsoft.Json.JsonWriter,object) [0x00012] in /Users/vink/Dropbox/Ajilon Source/Apps/Utils/Newtonsoft.Json.MonoTouch/Newtonsoft.Json/JsonSerializer.cs:451 
at Newtonsoft.Json.JsonSerializer.Serialize (Newtonsoft.Json.JsonWriter,object) [0x00000] 

我试过RestSharp。 MonoTouch的为好,得到了类似的错误:

Ran out of trampolines of type 2 in '/private/var/mobile/Applications/A901C3E6-D9AB-44AF-AA13-6B6E44467BAE/StaffRostering.app/mscorlib.dll' (128) 

Stacktrace: 

at RestSharp.Reflection.SafeDictionary`2.GetEnumerator() <0x000ab> 
at RestSharp.PocoJsonSerializerStrategy.TrySerializeUnknownTypes (object,object&) <IL 0x0002b, 0x00247> 
at RestSharp.PocoJsonSerializerStrategy.SerializeNonPrimitiveObject (object,object&) <IL 0x00010, 0x000e7> 
at RestSharp.SimpleJson.SerializeValue (RestSharp.IJsonSerializerStrategy,object,System.Text.StringBuilder) <IL 0x000f7, 0x00e1b> 
at RestSharp.SimpleJson.SerializeObject (object,RestSharp.IJsonSerializerStrategy) <IL 0x0000e, 0x000eb> 
at RestSharp.SimpleJson.SerializeObject (object) <IL 0x00006, 0x0008f> 
at RestSharp.Serializers.JsonSerializer.Serialize (object) <IL 0x00001, 0x00083> 

这里的解决方案:

跑出型蹦床2

如果您制作大量使用接口,您可能会在设备上收到此消息。您可以通过修改项目选项“iPhone Build”部分来创建更多类型2的蹦床(输入IMT Thunk)。要添加额外的参数的设备构建目标:IMT咚蹦床

-aot "nimt-trampolines=512" 

默认数量为128尝试增加这个数字,直到你有足够为你的接口使用。

我不知道蹦床是什么....

+0

罗尔夫描述他们在几个月前MonoTouch的邮件列表上@ http://monotouch.2284126.n4.nabble.com/Understanding-蹦床的影响-td4495086.html – poupou 2012-08-03 12:58:45

+0

谢谢。一旦我申请了这个,我就反弹了。很有弹性的解决方案。 – 2012-08-04 03:19:23