{"id":722,"date":"2011-07-21T11:53:54","date_gmt":"2011-07-20T23:53:54","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=722"},"modified":"2011-07-21T11:54:22","modified_gmt":"2011-07-20T23:54:22","slug":"something-for-delphi-to-be-proud-of-in-lion","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/722\/","title":{"rendered":"Something for Delphi to be proud of&#8230; in Lion ?!"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">&lt; 1<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p>Some people often complain loudly and passionately that Delphi needs a garbage collector and that reference counting is not good enough, but if I read this correctly, in the new OS X release &#8211; &#8216;Lion&#8217; &#8211; Apple seem to think that reference counting is an improvement over more sophisticated garbage collection techniques.<\/p>\n<p><!--more-->From the details discussed in <a href=\"http:\/\/arstechnica.com\/apple\/reviews\/2011\/07\/mac-os-x-10-7.ars\/10\" target=\"_blank\">page 10 of a a very, VERY detailed review of Lion<\/a>, it seems on the face of it that Apple&#8217;s brand new &#8220;ARC&#8221; (<strong>A<\/strong>utomatic <strong>R<\/strong>eference <strong>C<\/strong>ounting) seems to work exactly like Delphi&#8217;s own automatic reference counting of interfaces (and strings and dynamic arrays&#8230;) !! \u00a0Even if not entirely identical, the similarities are certainly close enough to be worthy of a raised eyebrow or two, and a little puff of pride at Embarcadero (or among former Borland&#8217;ers, where-ever they may now be).<\/p>\n<p>Where Delphi leads, it appears Apple sometimes follows&#8230;<\/p>\n<p>Of this, this perhaps should not be all that surprising &#8230; some people may not be aware that Delphi owes <a href=\"http:\/\/en.wikipedia.org\/wiki\/Object_Pascal#Early_history_at_Apple\" target=\"_blank\">a debt of gratitude to Apple for ObjectPascal<\/a> in the first place.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">&lt; 1<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> Some people often complain loudly and passionately that Delphi needs a garbage collector and that reference counting is not good enough, but if I read this correctly, in the new OS X release &#8211; &#8216;Lion&#8217; &#8211; Apple seem to think that reference counting is an improvement over more sophisticated garbage collection techniques.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[4],"tags":[292],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-bE","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":961,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/961\/","url_meta":{"origin":722,"position":0},"title":"Thinking Creatively with QueryInterface()","date":"02 Aug 2012","format":false,"excerpt":"I soon hope to be releasing \"Smoketest\", a testing framework that I have developed over the past few years. It has actually been in production use for most of that time (albeit by my own good self) but also continues to develop and evolve. \u00a0On the occasions when I have\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":644,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/644\/","url_meta":{"origin":722,"position":1},"title":"When is an interfaced object not an interfaced object?","date":"29 Jul 2010","format":false,"excerpt":"Answer: When it is merely the container for an interface. After a long series of observation and opinion pieces, I thought it about time I posted something a little more technical, so here we go. I think it is a well known practice to store references to objects in the\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":391,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/391\/","url_meta":{"origin":722,"position":2},"title":"Free Yourself","date":"27 Sep 2008","format":false,"excerpt":"Barry Kelly recently posted an example of \"smart\" pointers (specifically the auto-pointer variant of a smart pointer) using generics in Delphi 2009.\u00a0 It was an interesting use of generics but the end result was something that has - in part at least - been possible for some time in Delphi\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1930,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1930\/","url_meta":{"origin":722,"position":3},"title":"VCL Threading &#8211; Indeterminate Lifetimes","date":"18 Oct 2013","format":false,"excerpt":"Sometimes when you launch a thread you don't know when it will complete whatever processing it is tasked with. Sometimes you do. Sometimes it may never complete and will require that you expressly terminate it. Usually any given thread will have a lifecycle that is at least consistently one or\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1397,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1397\/","url_meta":{"origin":722,"position":4},"title":"Qualified Enum Reference That Fails to Compile in XE4 (and rightly so)","date":"01 May 2013","format":false,"excerpt":"Running through some of my code last night, putting them through the new XE4 compiler, threw up a real oddity: Some code that used to compile just fine, which no longer compiles in XE4 and which should not have compiled before! It's an odd one, because the code previously compiled\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":876,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/876\/","url_meta":{"origin":722,"position":5},"title":"Commonest Weakness&#8230;","date":"06 Jun 2012","format":false,"excerpt":"Stefan Glienke recently added his contribution to the various solutions for implementing weak interface references in Delphi. He quite neatly and comprehensively covers the need for such things, but his approach requires generics support and so is limited to later versions of the compiler (just how late really depends on\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/722"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=722"}],"version-history":[{"count":2,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/722\/revisions"}],"predecessor-version":[{"id":724,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/722\/revisions\/724"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}