According to some sites on the internet, section 3.3.1 of new iPhone Developer Agreement reads:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
So I take this to mean that any code to be written for iPhoneOS devices must be originally written in Objective-c,C,C++ or Javascript (WebKit). This is mainly a non issue for NinthDivision as we only write our iPhone code in Objective-C and C.
After reading about many developers ( and wanna bees ) coming to defend Adobe’s honor, I have to ask the question: How many developers who have released flash apps compiled for the iPhone ever optimized their application(s) to run with a great user experience? Does Adobe create better performance tools than Apple?
At NinthDivision, we put a lot of time into the user experience of our apps. With the exception of BigOmaha iPhone app, there is usually a fair amount of performance tuning that goes on behind the scenes.
In the case of BigOmaha, we only tested on 3GS devices ( which has a faster CPU than any previous iPhone or iPod Touch device ). The performance was more than acceptable until we tested a build on a 3G iPhone.
One hardware difference to consider is that the iPhone 3GS has a 600MHZ CPU and the 3G only has a 412MHZ CPU. I was extremely unsatisfied with the scrolling performance in the main twitter view. So now that BigOmaha 2010 is over, I decided to revisit the twitter view code.
As a warning, the rest of this post will be a bit technical in nature to illustrate a point that supports Apple’s changes in 3.3.1.

According to Instruments ( which all iPhone developers should be using ), my scrolling performance was peaking at 44 Frames Per Second.

This indicates to me that I am taxing the CPU much more than needed causing the scrolling performance to plummet.
After looking at this output, I noticed that we were recreating and configuring a NSDateFormatter for every cell that was being displayed. This meant that we were creating and configuring a different instance of the same object for every cell that needed to be drawn ( i.e. when the user scrolls ).

20.5% of the overall CPU usage is happening in BOTwitterViewController’s configureCell:forIndexPath: method.
The Solution? Create only a single instance of a NSDateFormatter and configure it once. The results surprised me.. the overall CPU usage for that method dropped from 20.5% to 1.2%

The scrolling performance is now peaking at 57 FramesPer Second
What this all means is that my iPod Touch 2G scrolls faster than my iPhone 3GS!
The bigger point is that I performed this optimization using Apple’s supported toolchain. So from a performance and user experience point of view, are Flash developers who export iPhone binaries able to get to this level of detail within their own code? In that case where does the runtime stop and the developer begin? On the iPhone, user experience does matter, so having access to these tools is essential for finding problems with your app.