<div>&gt;This is not accurate, since your approach box the valuetypes, they impose the same overhead as reference types. The MS runtime supports this by accident, as this is not something defined my &gt;the ECMA standard and is type unsound.</div>
<div>Do you really think that MS supports this by accident about 8 years? You are joking =) </div><div>Using mine approach boxing of Objective-C proxies appears only in places like &quot;string.Format&quot;, but MOST of program work with structs or their copies. Where there box operations:</div>
<div>                 Assert.AreEqual( 0x6FFF7FFF, new NSNumber( NSNumber.numberWithInt_( 0x6FFF7FFF ) ).intValue() );<br>                 Assert.AreEqual( 0x6FFF7FFF, new NSNumber( NSNumber.numberWithLong_( 0x6FFF7FFF ) ).longValue() );<br>                 Assert.AreEqual( 0x7FFF6FFFu, new NSNumber( NSNumber.numberWithUnsignedInt_( 0x7FFF6FFFu ) ).unsignedIntValue() );</div>
<div></div><div>&gt;I see.    Well, like our JIT engineer Rodrigo Kumpera said, this is a<br>&gt;feature that we do not plan on supporting and that we reserve the right<br>&gt;to break (see the discussion on this list from February).<br>
<br></div><div>Having such feature makes more sense than performance gained from SIMD optimizations for Mac OS GUI programming ;)<br>See main page <a href="http://code.google.com/p/nobjective/">http://code.google.com/p/nobjective/</a> for managed/unmanaged memory consumption test result. </div>
<div></div><div>&gt;The problem is that it should support this:<br>&gt;       class Foo : Control {<br>&gt;               public override bool Enable {<br>&gt;                       get { ... };<br>&gt;                       set { ... };<br>
&gt;               }<br>&gt;       }<br>&gt;Which is not possible to do with NObjective.</div><div>Do you mean overrides for imported to .NET runtime Objective-C classes or exported to Objective-C .NET classes? For exported classes programmer should know such fundamental things of Objective-C like that all methods are virtual (like in Java). He can write following to &#39;override&#39; exported Objective-C methods:<br>
class Foo : Control {<br> public new bool Enable {<br> get { ... };<br> set { ... };<br> }<br>}</div><div></div><div>&#39;virtual&#39; specifier makes sense only for C# code that uses such methods, but makes no sense while exporting. Also I can write additional code that will throw exception forALL &#39;virtual&#39; methods that user want to export to prevent such misunderstanding.</div>
<div></div><div>-- <br></div><div>WBR,<br>Eugeny Grishul<br></div>