<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>mikeash.com pyblog/leopard-first-impressions.html comments</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>mikeash.com Recent Comments</description><lastBuildDate>Sat, 05 Sep 2026 08:38:36 GMT</lastBuildDate><generator>PyRSS2Gen-1.0.0</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>mikeash - 2007-12-02 01:19:18</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>I deliberately separated GC from the rest since I think it deserves its own spot. I realize it's lumped into the "2.0", but I still think it's totally a marketing name.
&lt;br /&gt;
&lt;br /&gt;The 64-bit runtime itself is just the logical continuation of 64-bit support. The fact that it eliminates the fragile base class problem is nice but of little practical value for most of us. It's hard to include this in the "2.0" when it's only available for 64-bit. A more significant 64-bit only feature is the unified ObjC/C++ exceptions model and zero-cost exceptions.
&lt;br /&gt;
&lt;br /&gt;As for the rest, I forgot about those. Properties introspection is interesting although I can't immediately think of a use for it, but I'm sure someone somewhere will find one.</description><guid isPermaLink="true">dc2a026fbc935eb361ea9d57dc966794</guid><pubDate>Sun, 02 Dec 2007 01:19:18 GMT</pubDate></item><item><title>Ahruman - 2007-12-01 16:36:40</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>Objective-C 2.0: I believe GC and the new 64-bit non-fragile runtime are included in the label. Also, you missed:
&lt;br /&gt;* @optional
&lt;br /&gt;* Properties can be introspected for semantics, e.g. retain/assign/copy, although there doesn’t seem to be a high-level interface, so you need to parse undocumented strings.
&lt;br /&gt;* Properties are also the only way to define private variables which aren’t listed in the header under the 64-bit runtime, although it looks as though this can be fixed.
&lt;br /&gt;So, er, whoo. Um. :-)</description><guid isPermaLink="true">1f2517ff75646b852d400606bd6e86df</guid><pubDate>Sat, 01 Dec 2007 16:36:40 GMT</pubDate></item><item><title>mikeash - 2007-12-01 09:15:33</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>My comments about properties apply to all aspects of properties. Yes, it's less cookie-cutter code, and that is nice, but it's not really all that special. This certainly does not deserve the fawning I've seen people direct toward the new syntax. And the fact that the automatically-generated accessors use locks is worse than useless, as it only encourages the misconception that thread-safe accessors are either necessary or sufficient for thread-safe code. Apple has actively encouraged this stance in documentation about both the properties syntax and garbage collection, which is unfortunate.
&lt;br /&gt;
&lt;br /&gt;The fact that the new for loop syntax is implemented very efficiently is nice but it's really hard to care about this fact. I can't remember having &lt;i&gt;ever&lt;/i&gt; written a speed-critical loop in which the overhead of iteration was even remotely significant. It's certainly good that it's not creating NSEnumerators and sending a message for each iteration under the hood, but the fact that my foreach macro does exactly that has never impacted the performance of my code in any visible way.
&lt;br /&gt;
&lt;br /&gt;For transparent animation, first I will quote the release notes which describe how it's supposed to work:
&lt;br /&gt;
&lt;br /&gt;&lt;i&gt;The primary difference under Core Animation-based compositing is that for intrinsic geometric properties such as the view's "frame," all animation is handled at the Core Animation level, meaning that the view's property will be immediately set to the desired target value, and the view won't see the successive intermediate values. The animation effect in such cases is purely visual and exists only in Core Animation's "render tree" backend.&lt;/i&gt;
&lt;br /&gt;
&lt;br /&gt;And then this simple code will demonstrate the fact that this is not actually the case:
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;NSLog(@"%@", NSStringFromRect([view frame]));
&lt;br /&gt;[view setFrame:newFrame];
&lt;br /&gt;NSLog(@"%@", NSStringFromRect([view frame]));&lt;/code&gt;
&lt;br /&gt;
&lt;br /&gt;The two log statements will display exactly the same values, even when the view is set to be layer-backed. Given the release notes, I expect the second log to display &lt;code&gt;newFrame&lt;/code&gt;, but it doesn't.</description><guid isPermaLink="true">57f2126d02df9aae359aef51661edc8f</guid><pubDate>Sat, 01 Dec 2007 09:15:33 GMT</pubDate></item><item><title>Chris Ryland - 2007-12-01 08:34:44</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>Nice post.
&lt;br /&gt;
&lt;br /&gt;How is transparent animation broken? Do you have an example?
&lt;br /&gt;
&lt;br /&gt;</description><guid isPermaLink="true">4df5c898906abdf0e297e1da3c9cf58a</guid><pubDate>Sat, 01 Dec 2007 08:34:44 GMT</pubDate></item><item><title>n[ate]vw - 2007-12-01 07:58:10</title><link>http://www.mikeash.com/?page=pyblog/leopard-first-impressions.html#comments</link><description>&amp;gt;Properties are unexciting syntactic sugar
&lt;br /&gt;
&lt;br /&gt;Do you just mean the dot syntax?  Synthesized properties mean that much less annoying cookie cutter code to type, and also enable the compiler to take care of locks if necessary.
&lt;br /&gt;
&lt;br /&gt;&amp;gt;The new for loop syntax is nice but doesn't do anything significant that my own home-rolled foreach macro hasn't done for me for years.
&lt;br /&gt;
&lt;br /&gt;This feature is not just syntax, but allows speed improvements as well. It enables any conforming collection class to pass back a direct pointer to its internal storage when possible, or at most do some quick copies of pointers into preallocated memory. I think that's a pretty cool language addition.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Thanks for the heads up about CFStringTokenizer...I think I'd come across an older Apple-provided library that did some of that, but nice to know it's a part of Cocoa now! That will be a fun class to play with.</description><guid isPermaLink="true">bffec29afc7b09ee36aa02350823eccf</guid><pubDate>Sat, 01 Dec 2007 07:58:10 GMT</pubDate></item></channel></rss>
