2013-04-24 44 views
0

我遇到了一個奇怪的行爲與mtouch;我知道在特定情況下AOT可能會失敗,但我認爲這個問題有點不同。mtouch AOT缺少彙編

下面是一些代碼:

public class TTableCell 
{ 
} 

public class TTableElement<T> 
    where T: TTableElement<T> 
{ 
    public void SetProperty<TV> (ref TV backingStorage, string propName, TV value) 
    { 
     backingStorage = value; 
    } 
} 

public class TAbstractTableItem<TC> : TTableElement<TAbstractTableItem<TC>> 
    where TC : TTableCell 
{ 
    public TAbstractTableItem() 
    { 
    } 

    string _string; 
    bool _bool; 

    public void DoException() 
    { 
     SetProperty (ref _string, "String", "Bla bla"); 
     SetProperty (ref _bool, "Boolean", false); 
    } 
} 

現在,如果執行以下操作別的地方:

TTableItem<TTableCell> item = new TTableItem<TTableCell>(); 
item.DoException(); 

我得到異常:

Unhandled managed exception: Attempting to JIT compile method 'TouchSandbox.TTableElement`1<TouchSandbox.TAbstractTableItem`1<TouchSandbox.TTableCell>>:SetProperty<bool> (bool&,string,bool)' 

現在,請注意只會爲布爾型版本引發異常,而不是字符串之一。在我的項目中,我使用了多種類型的方法(自定義類型),這個問題只發生在bool中。

任何人都可以幫我解決這個問題嗎?

感謝

塞爾吉奧

附:顯然,這個問題是存在進入的iDevice只(而不是模擬器)

UPDATE

好了,一個小的搜索到xamarin的Bugzilla後,我發現,強調了缺乏車票(實際上是一個有點老!) mtouch AOT:Bug 2096。可悲的是,似乎他們還沒有修復!

回答

2

泛型類中的泛型方法似乎存在問題。

我也試過6.3測試版的測試用例(它可能會解決這個問題,因爲很多東西都在這個區域有所改進),但它崩潰而不是拋出異常(bug filed - 你可以CC自己是更新時它是固定的)。

+0

是的,謝謝...實際上我已經嘗試過其他值類型(int,float,DateTime),似乎它與它們有關。 – Atropo 2013-04-24 12:27:36

+0

是的,它與價值類型有關。課程工作得很好。 – 2013-04-24 12:36:10