<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Vincent Gable's Blog</title>
	<atom:link href="http://vgable.com/blog/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://vgable.com/blog</link>
	<description>my weblog.</description>
	<lastBuildDate>Wed, 17 Mar 2010 19:41:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on NSXMLParser and HTML/XHTML by Anonymous</title>
		<link>http://vgable.com/blog/2009/05/01/nsxmlparser-and-htmlxhtml/comment-page-1/#comment-1000</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Wed, 17 Mar 2010 19:41:03 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2009/05/01/nsxmlparser-and-htmlxhtml/#comment-1000</guid>
		<description>I too saw this behavior. I was converting my string using
    string = [string stringByReplacingOccurrencesOfString:@&quot;&quot; withString:@&quot;&gt;&quot;];

But when the xml attribute value consisted of html tags such as  adsfasd  the NSXMLParser failed.</description>
		<content:encoded><![CDATA[<p>I too saw this behavior. I was converting my string using<br />
    string = [string stringByReplacingOccurrencesOfString:@"" withString:@"&gt;"];</p>
<p>But when the xml attribute value consisted of html tags such as  adsfasd  the NSXMLParser failed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Ignoring Just One Deprecated Warning by Des Courtney</title>
		<link>http://vgable.com/blog/2009/06/15/ignoring-just-one-deprecated-warning/comment-page-1/#comment-989</link>
		<dc:creator>Des Courtney</dc:creator>
		<pubDate>Fri, 26 Feb 2010 11:03:51 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2009/06/15/ignoring-just-one-deprecated-warning/#comment-989</guid>
		<description>Thanks for allowing me to keep -Werror turned on!

(I&#039;d have used Twitter, but my account&#039;s private and you wouldn&#039;t have seen the message...)</description>
		<content:encoded><![CDATA[<p>Thanks for allowing me to keep -Werror turned on!</p>
<p>(I&#8217;d have used Twitter, but my account&#8217;s private and you wouldn&#8217;t have seen the message&#8230;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Prefer copy Over retain by Bo</title>
		<link>http://vgable.com/blog/2008/11/14/prefer-copy-over-retain/comment-page-1/#comment-982</link>
		<dc:creator>Bo</dc:creator>
		<pubDate>Sat, 13 Feb 2010 03:27:51 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2008/11/14/prefer-copy-over-retain/#comment-982</guid>
		<description>About the &quot;A Sneaky Bug Too&quot;, I tried this:

[immutableString isMemberOfClass:[NSMutableString class]]

and it is NO.

So I guess we can use &quot;isMemberOfClass&quot; to make sure that the Object is not a subclass, in case we know which subclass we will be worry about.</description>
		<content:encoded><![CDATA[<p>About the &#8220;A Sneaky Bug Too&#8221;, I tried this:</p>
<p>[immutableString isMemberOfClass:[NSMutableString class]]</p>
<p>and it is NO.</p>
<p>So I guess we can use &#8220;isMemberOfClass&#8221; to make sure that the Object is not a subclass, in case we know which subclass we will be worry about.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Detecting if Headphones are Plugged In by Joerg Lange</title>
		<link>http://vgable.com/blog/2008/09/11/detecting-if-headphones-are-plugged-in/comment-page-1/#comment-975</link>
		<dc:creator>Joerg Lange</dc:creator>
		<pubDate>Sun, 07 Feb 2010 19:36:20 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2008/09/11/detecting-if-headphones-are-plugged-in/#comment-975</guid>
		<description>AudioHardwareGetProperty and AudioDeviceGetProperty works not in snow leopard, since I have some probs understanding coreaudio framework; are there any workarounds ?</description>
		<content:encoded><![CDATA[<p>AudioHardwareGetProperty and AudioDeviceGetProperty works not in snow leopard, since I have some probs understanding coreaudio framework; are there any workarounds ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Point Of View is 80 IQ Points by Vincent Gable</title>
		<link>http://vgable.com/blog/2009/02/05/point-of-view-is-80-iq-points/comment-page-1/#comment-968</link>
		<dc:creator>Vincent Gable</dc:creator>
		<pubDate>Thu, 04 Feb 2010 04:12:59 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2009/02/05/point-of-view-is-80-iq-points/#comment-968</guid>
		<description>Related, &lt;a href=&quot;http://www.youtube.com/watch?v=wMFPe-DwULM&quot; rel=&quot;nofollow&quot;&gt; Feynman explaining why he can&#039;t answer &quot;why&quot; magnets work, unless he&#039;s in a physics context&lt;/a&gt;. &lt;blockquote&gt;I really can&#039;t do a good job, any job, of explaining magnetic force in terms of something else you&#039;re more familiar with, because I don&#039;t understand it in terms of anything else you&#039;re more familiar with.&lt;/blockquote&gt;</description>
		<content:encoded><![CDATA[<p>Related, <a href="http://www.youtube.com/watch?v=wMFPe-DwULM" rel="nofollow"> Feynman explaining why he can&#8217;t answer &#8220;why&#8221; magnets work, unless he&#8217;s in a physics context</a>.<br />
<blockquote>I really can&#8217;t do a good job, any job, of explaining magnetic force in terms of something else you&#8217;re more familiar with, because I don&#8217;t understand it in terms of anything else you&#8217;re more familiar with.</p></blockquote>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutable @property and Copy Gotcha by Bob Donovan</title>
		<link>http://vgable.com/blog/2009/03/17/mutable-property-and-copy-gotcha/comment-page-1/#comment-966</link>
		<dc:creator>Bob Donovan</dc:creator>
		<pubDate>Fri, 29 Jan 2010 16:31:42 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2009/03/17/mutable-property-and-copy-gotcha/#comment-966</guid>
		<description>Thanks for the tips you saved me hours of frustration.</description>
		<content:encoded><![CDATA[<p>Thanks for the tips you saved me hours of frustration.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on memcopy, memmove, and Speed over Safety by Santiago</title>
		<link>http://vgable.com/blog/2008/05/24/memcopy-memmove-and-speed-over-safety/comment-page-1/#comment-964</link>
		<dc:creator>Santiago</dc:creator>
		<pubDate>Thu, 21 Jan 2010 04:10:10 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2008/05/24/memcopy-memmove-and-speed-over-safety/#comment-964</guid>
		<description>If memory areas don&#039;t overlap memmove should be just a call to memcpy, so both calls would have the same performance. Otherwise the compiler / standard libraries aren&#039;t optimized. But if both memory areas overlap, memmove would have to copy the memory backwards, which is always muuuch slower (memory caches and other parts of the hardware aren&#039;t optimized for that, and there is nothing we can do about that). However, as you said, memcpy could destroy the data, and that&#039;s not a viable option.

In summary, memmove and memcpy should be equally faster (otherwise, use another implementation), the overhead of testing if memory overlaps is negligible (but memmove can&#039;t never be faster in real scenarios). So I agree, memmove should always be used preferably over memcpy.</description>
		<content:encoded><![CDATA[<p>If memory areas don&#8217;t overlap memmove should be just a call to memcpy, so both calls would have the same performance. Otherwise the compiler / standard libraries aren&#8217;t optimized. But if both memory areas overlap, memmove would have to copy the memory backwards, which is always muuuch slower (memory caches and other parts of the hardware aren&#8217;t optimized for that, and there is nothing we can do about that). However, as you said, memcpy could destroy the data, and that&#8217;s not a viable option.</p>
<p>In summary, memmove and memcpy should be equally faster (otherwise, use another implementation), the overhead of testing if memory overlaps is negligible (but memmove can&#8217;t never be faster in real scenarios). So I agree, memmove should always be used preferably over memcpy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Splash Screens Are Evil by Vincent Gable</title>
		<link>http://vgable.com/blog/2010/01/13/splash-screens-are-evil/comment-page-1/#comment-962</link>
		<dc:creator>Vincent Gable</dc:creator>
		<pubDate>Tue, 19 Jan 2010 17:41:39 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/?p=555#comment-962</guid>
		<description>spinyanteater,

&lt;blockquote&gt;I’d rather stare at an attractively designed splashscreen for those few moments than an unresponsive menu screen.&lt;/blockquote&gt;
I totally agree there! But I see it as a &quot;lesser of two evils&quot; kind of fix -- a hopefully temporary solution. Ideally it&#039;s possible to come back later and optimize loading time to the point that it isn&#039;t unresponsive.

But of course this isn&#039;t an ideal world. it&#039;s not possible to solve every problem. Some apps need 3-5 seconds to start up on a phone — in that case, some kind of splashscreen is a &lt;i&gt;necessary&lt;/i&gt; evil. 

For what it&#039;s worth, I&#039;ve read that a &quot;loading&quot; screen (showing a static UI + a spinner) can work better than a static splash screen.

&lt;blockquote&gt;So I did some user testing. Everybody I tested it on said that the 3.5 second launch time with the loading  screen  was faster than the 3 second launch time with just the plain splashscreen, so it was clear that was the way to go.
&lt;/blockquote&gt;
--James Thomson, &lt;a href=&quot;http://www.dragthing.com/blog/?p=246&quot; rel=&quot;nofollow&quot;&gt;&lt;cite&gt;How To Make Your iPhone App Launch Faster&lt;/cite&gt;&lt;/a&gt;

But if a pretty-logo splash screen tests better for your users, then clearly it&#039;s the way to go! Maybe it&#039;s breaking the HIG, or &quot;best practices&quot;, but it&#039;s justified with real evidence.</description>
		<content:encoded><![CDATA[<p>spinyanteater,</p>
<blockquote><p>I’d rather stare at an attractively designed splashscreen for those few moments than an unresponsive menu screen.</p></blockquote>
<p>I totally agree there! But I see it as a &#8220;lesser of two evils&#8221; kind of fix &#8212; a hopefully temporary solution. Ideally it&#8217;s possible to come back later and optimize loading time to the point that it isn&#8217;t unresponsive.</p>
<p>But of course this isn&#8217;t an ideal world. it&#8217;s not possible to solve every problem. Some apps need 3-5 seconds to start up on a phone — in that case, some kind of splashscreen is a <i>necessary</i> evil. </p>
<p>For what it&#8217;s worth, I&#8217;ve read that a &#8220;loading&#8221; screen (showing a static UI + a spinner) can work better than a static splash screen.</p>
<blockquote><p>So I did some user testing. Everybody I tested it on said that the 3.5 second launch time with the loading  screen  was faster than the 3 second launch time with just the plain splashscreen, so it was clear that was the way to go.
</p></blockquote>
<p>&#8211;James Thomson, <a href="http://www.dragthing.com/blog/?p=246" rel="nofollow"><cite>How To Make Your iPhone App Launch Faster</cite></a></p>
<p>But if a pretty-logo splash screen tests better for your users, then clearly it&#8217;s the way to go! Maybe it&#8217;s breaking the HIG, or &#8220;best practices&#8221;, but it&#8217;s justified with real evidence.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Splash Screens Are Evil by spinyanteater</title>
		<link>http://vgable.com/blog/2010/01/13/splash-screens-are-evil/comment-page-1/#comment-961</link>
		<dc:creator>spinyanteater</dc:creator>
		<pubDate>Tue, 19 Jan 2010 10:02:44 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/?p=555#comment-961</guid>
		<description>Our first app followed the HIG guidelines and dutifully used a screenshot of the main menu screen as the splashscreen. The app loaded quickly and in testing it seemed to work fine. But customers didn&#039;t like it. As you say, we want to use an iPhone app as soon as we open it and that means we are tapping away at the screen as soon as we have finished tapping the icon to open it. The result is that nothing happens and we have to tap again. Our customers found this irritating. We changed the splashscreen to a logo which disappears as soon as the first xib file has loaded and our customers are happy.

My point is that, used properly, splashscreens are a good thing. You can&#039;t use the app before it loads whether the splashscreen is there or not, and the splashscreen gives visual feedback that the app is still loading. I&#039;d rather stare at an attractively designed splashscreen for those few moments than an unresponsive menu screen.</description>
		<content:encoded><![CDATA[<p>Our first app followed the HIG guidelines and dutifully used a screenshot of the main menu screen as the splashscreen. The app loaded quickly and in testing it seemed to work fine. But customers didn&#8217;t like it. As you say, we want to use an iPhone app as soon as we open it and that means we are tapping away at the screen as soon as we have finished tapping the icon to open it. The result is that nothing happens and we have to tap again. Our customers found this irritating. We changed the splashscreen to a logo which disappears as soon as the first xib file has loaded and our customers are happy.</p>
<p>My point is that, used properly, splashscreens are a good thing. You can&#8217;t use the app before it loads whether the splashscreen is there or not, and the splashscreen gives visual feedback that the app is still loading. I&#8217;d rather stare at an attractively designed splashscreen for those few moments than an unresponsive menu screen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Automatically Freeing Every @property by Pierre Bernard</title>
		<link>http://vgable.com/blog/2008/12/20/automatically-freeing-every-property/comment-page-1/#comment-960</link>
		<dc:creator>Pierre Bernard</dc:creator>
		<pubDate>Tue, 12 Jan 2010 23:11:08 +0000</pubDate>
		<guid isPermaLink="false">http://vgable.com/blog/2008/12/20/automatically-freeing-every-property/#comment-960</guid>
		<description>I offer a variation on the above technique. Rather than calling the setters, I release and nil the variable used for storage.
http://bernard-web.com/pierre/blog/index.php?id=2624434753771423706</description>
		<content:encoded><![CDATA[<p>I offer a variation on the above technique. Rather than calling the setters, I release and nil the variable used for storage.<br />
<a href="http://bernard-web.com/pierre/blog/index.php?id=2624434753771423706" rel="nofollow">http://bernard-web.com/pierre/blog/index.php?id=2624434753771423706</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
