<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 30, 2016, at 12:56 , Matthias Zenger via swift-users &lt;<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="font-family: Georgia; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Nevertheless, this collaborative garbage collection scheme where the mark/sweep collector handles cycles and ARC handles the rest doesn't feel like a good solution. It's, at best, a workaround that is impossible to optimize. This is why I was wondering if there's anything else I could do…</div></div></blockquote><br class=""></div><div><br class=""></div><div><br class=""></div><div>Matthias,</div><div><br class=""></div><div><br class=""></div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>What you’ve described is essentially the Python memory management system. It is reference counted along with a cycle analyzer. It works quite well. I would not reject it out of hand too soon.</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>While the standard answer is to use Swift structures for everything, there are Cocoa structures that work with with weak references.&nbsp;NSPointerFunctionsWeakMemory is one such. There are others, &lt;<a href="https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSPointerFunctions_Class/index.html" class="">https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSPointerFunctions_Class/index.html</a>&gt;.</div><div><br class=""></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>I suspect your best answer is to actually build something out of swift collection and sequence primitives.</div><div><br class=""></div><div><br class=""></div><br class=""><div class="">
<div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Anon,<br class="">Andrew<br class="">____________________________________<br class="">Andrew W. Donoho<br class="">Donoho Design Group, L.L.C.<br class=""><a href="mailto:andrew.donoho@gmail.com" class="">andrew.donoho@gmail.com</a>, +1 (512) 666-7596, <a href="http://twitter.com/adonoho" class="">twitter.com/adonoho</a><br class=""><br class="">New: Spot marks the taX™ App, &lt;<a href="http://spotmarksthetax.com" class="">http://SpotMarksTheTaX.com</a>&gt;<br class="">Retweever Family: &lt;<a href="http://image.retweever.com" class="">http://Image.Retweever.com</a>&gt;,&nbsp;&lt;<a href="http://retweever.com" class="">http://Retweever.com</a>&gt;<br class=""></div><div style="orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; orphans: auto; text-align: start; text-indent: 0px; widows: auto; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">No risk, no art.<br class=""><span class="Apple-tab-span" style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: pre; word-spacing: 0px; -webkit-text-stroke-width: 0px;">        </span>No art, no reward.<br class=""><span class="Apple-tab-span" style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: pre; word-spacing: 0px; -webkit-text-stroke-width: 0px;">        </span><span class="Apple-tab-span" style="color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: pre; word-spacing: 0px; -webkit-text-stroke-width: 0px;">        </span>-- Seth Godin<br class=""><br class=""></div></div></div></div>
</div>
<br class=""></body></html>