2013-05-07 3 views
0

Мой код, который использует NSKeyedUnarchiver в настоящее время бросает TypeLoadException при использовании последней monomac из Git:регресс в NSKeyedUnarchiver

System.EntryPointNotFoundException: monomac_IntPtr_objc_msgSend_IntPtr at at (wrapper managed-to-native) MonoMac.ObjCRuntime.Messaging:monomac_IntPtr_objc_msgSend_IntPtr (intptr,intptr,intptr) at MonoMac.Foundation.NSKeyedUnarchiver..ctor (MonoMac.Foundation.NSData data) [0x0002a] in /Users/richard/Development/MonoMacSources/gitsrc/monomac/src/Foundation/NSKeyedUnarchiver.g.cs:93 

Тот же самый код работает нормально, используя версию monomac.dll, который поставляется с Xamarin Studio.

Тестовый пример:

public NSTextFieldCell Cell = new NSTextFieldCell("string"); 

public override void AwakeFromNib() 
{ 
    base.AwakeFromNib(); 

    Console.WriteLine(Cell.StringValue); 

    using(NSMutableData data = new NSMutableData()) 
    { 
     using(NSKeyedArchiver archiver = new NSKeyedArchiver(data)) 
     { 
      this.Cell.EncodeTo(archiver); 
      archiver.FinishEncoding(); 
     } 

     using(NSKeyedUnarchiver unarchiver = new NSKeyedUnarchiver(data)) 
     { 
      var cell = (NSTextFieldCell)Activator.CreateInstance(typeof(NSTextFieldCell), new object[] { unarchiver }); 
      unarchiver.FinishDecoding(); 

      Console.WriteLine(cell.StringValue); 
     } 
    } 
} 

Исключение брошено в new NSKeyedUnarchiver(data)).

У кого-нибудь есть идеи? Или обходной путь?

ответ

2

Это эффективная регрессия в последнем MonoMac от Git.

Я исправлю (в настоящее время нет обходного пути, кроме использования более ранней версии от Git).

It's fixed now.

+0

Awesome. Спасибо @Rolf – TheNextman

+0

Блестящий. Благодарю. – TheNextman