<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Planetary Scale LLC &#187; App Store</title>
	<atom:link href="http://blog.planetaryscale.com/tag/app-store/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.planetaryscale.com</link>
	<description></description>
	<lastBuildDate>Fri, 20 Nov 2009 22:39:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>On the Postage Rejection</title>
		<link>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/</link>
		<comments>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 22:39:05 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Miscellany]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://blog.planetaryscale.com/?p=80</guid>
		<description><![CDATA[Note: A technical post follows. If you&#8217;re not interested in iPhone programming, you can safely ignore it. Technical Analysis An update to RogueSheep&#8217;s Postage app was recently rejected by Apple because of a supposed overriding of a private method in a category. Apple most likely used a static analyzer to determine this problem. As far [...]]]></description>
			<content:encoded><![CDATA[<p>Note: A technical post follows. If you&#8217;re not interested in iPhone programming, you can safely ignore it.</p>
<p><b>Technical Analysis</b><br />
An update to RogueSheep&#8217;s Postage app was <a href="http://blog.roguesheep.com/2009/11/19/warning-love-hurts/">recently rejected</a> by Apple because of a supposed overriding of a private method in a category. Apple most likely used a static analyzer to determine this problem. As far as I can tell, Apple has a bug in their static analyzer.</p>
<p><a href="http://github.com/facebook/three20">Three20</a> adds a category method <code>-previousViewController</code> to the UIKit class <code>UIViewController</code>. According to RogueSheep:</p>
<blockquote><p>The notice from Apple indicated that we had used a private method of <code>UIViewController</code> called <code>previousViewController</code>. </p></blockquote>
<p>As far as I can tell, there is no private method in <code>UIViewController</code> called <code>-previousViewController</code>. There is, however, a private method on UINavigationController (a subclass of UIViewController) called <code>-previousViewController</code>.</p>
<p>However, this should not be a problem. Subclasses of <code>UIViewController</code> which implement <code>-previousViewController</code> themselves will override the category method defined on <code>UIViewController</code> by Three20. This includes <code>UINavigationController</code> and whatever other Apple-defined subclasses exist for <code>UIViewController</code>.</p>
<p>I have filed this as Radar #<a href="http://openradar.appspot.com/radar?id=117401">7414099</a> (<a href="rdar://7414099">rdar://7414099</a> for Apple employees).  The test project is available at: <a href="http://blog.planetaryscale.com/wp-content/uploads/2009/11/CategoryBehavior.zip">CategoryBehavior.zip</a></p>
<p><b>Opinion</b><br />
Ultimately, if my analysis is correct, this is just a bug. They happen. Static analyzers are especially difficult to get right, especially when the source isn&#8217;t available. This shouldn&#8217;t be read as an indictment of Apple, or of Apple&#8217;s intentions. They&#8217;re just trying to protect the user experience of their products and head off binary compatibility problems.</p>
<p>However, I personally think they&#8217;re going to have a difficult time trying to detect private methods with a static analyzer. They might have better luck doing analysis at runtime &#8212; checking the actual class hierarchy and interposing on method calls.</p>
<p>Meanwhile, there will be a lot of false positives caused by this, which is going to be frustrating for a lot of iPhone app developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.planetaryscale.com/2009/11/20/on-the-postage-rejection/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
