<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 2010-04-20, at 1:45 PM, Duane Wandless wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">That sounds like the retain/release is then being automatically handled.&nbsp; Once the object is referenced inside C# the retain occurs.&nbsp; Then when the C# object is GCed the release should occur.&nbsp; Is that correct?&nbsp; Which if it is then all I should have to do is set the C# variable to null or call Dispose and I have the same basic functionality I listed.<br></blockquote><div><br></div>This is correct (the Disposer is what cleans up as well so if you want to be deterministic with the native object graph you call Dispose).</div><div><br><blockquote type="cite">
<br>It would probably also be worthwhile making retainCount public.&nbsp; As this is a useful debugging technique for memory leaks.<br></blockquote><div><br></div>Considering how much we monkey with this (multiple managed references are in 1 slot, additionally with nsautorelease pool) I'm not sure I want this in the public api. &nbsp;You can get at it yourself trivially:</div><div><br></div><div>Messaging.uint_objc_msgSend (objc.Handle, Selector.GetHandle ("retainCount"));</div><div><br><blockquote type="cite"><br>I have yet to use MonoMac so I'm still guessing a bit on how the interaction with native obj-c code will work.&nbsp; I just want to ensure I'm not loosing obj-c functionality.&nbsp; Having control of the retain cycle is an important 'feature' of obj-c.<br></blockquote><div><br></div>Its not a 'feature' its a requirement, and we aim to remove that requirement by letting people use the GC.</div><div><br></div><div>-g</div><div><br><blockquote type="cite">
<br>Duane<br><br><div class="gmail_quote">On Tue, Apr 20, 2010 at 1:37 PM, Geoff Norton <span dir="ltr">&lt;<a href="mailto:gnorton@novell.com">gnorton@novell.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Whenever we bubble a proxy object, it takes a reference to the underlying native object, as such in the circumstance you described the object could not "go away"<br>
<br>
-g<br>
<div><div></div><div class="h5"><br>
On 2010-04-20, at 1:24 PM, Duane Wandless wrote:<br>
<br>
&gt; I noticed that retain/release/autorelease our internal methods. &nbsp;I'm not fan of doing memory management as that takes away time from solving business needs. &nbsp;Memory management is required with obj-c. &nbsp;And I believe these should be public.<br>

&gt;<br>
&gt; There are times when an object is passed as an argument into my C# code that must be retained while the C# code manipulates the object (typically a UI object)... then release that object when done. &nbsp;The most common usage is the UI is a delegate for the async C# method. &nbsp;At times the UI object will go away while the C# code is running its async task. &nbsp;The retain of course prevents sending a selector to a deallocated object. &nbsp;And there are times when the UI delegate selector is not invoked so I must be able to release the UI object from the C# code.<br>

&gt;<br>
&gt; I think one of the fundamental design patterns of MonoTouch and now MonoMac is that all the code will be written in C#. &nbsp;I do think this assumption is limiting. &nbsp;Giving the C# code full access to the obj-c objects allows for truly the best of both worlds. &nbsp;The advantages of the C# language can be leveraged.. but without limiting the functionality of the various NS classes within C#.<br>

&gt;<br>
&gt; Again my usage is a native obj-c app for the UI with the business logic in C#. &nbsp;There are advantages to fully developing within C# MonoMac .. I just want to push the design so that is not required.<br>
&gt;<br>
&gt; Duane<br>
</div></div>&gt; _______________________________________________<br>
&gt; Mono-osx mailing list<br>
&gt; <a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>
&gt; <a href="http://lists.ximian.com/mailman/listinfo/mono-osx" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-osx</a><br>
<br>
</blockquote></div><br>
</blockquote></div><br></body></html>