If I asked deep questions -- like why they consider open source code to be external frameworks that must be forbidden -- I got no answer. I began joking that iPhone development is like elementary school. You have to do all of the work yourself. Don't even think of copying that method from some Apache code because that might be seen as a "private API." (Yes, I know that Apple cribbed much of the OS X running on the iPhone from the BSD project, but again this is like elementary school. The teachers can photocopy the worksheets, but the students need to do everything on their own.)
There are other puzzling rejection notes. While all I do is dump HTML in a UIWebView, one time the App Store Magic-8 ball scolded me, "An Application may not itself install or launch other executable code by any means, including without limitation through use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple's Published APIs and built-in interpreter(s)."
Anyone who has spent much time trying to understand the more philosophical aspects of computer science will wonder at this impossible distinction. In the most abstract models, there's no difference between a program and data. The data that gives an address for a restaurant can be thought of as a compact program for drawing a map and vice versa. While I'm sure everyone agrees that "good" is "good" and "bad" is "bad," I'm also sure that there's no guaranteed way for detecting a program that is about to download good data or a bad program.
Needless to say, this blocks many useful mechanisms for the app developer. You can't download new fixes for old bugs or even include functionality like a widget in your application. It also blocks great applications like an emulator for old Commodore 64 games. I feel sorry for the developer who apparently went to the trouble to get a valid Commodore license only to be rejected by a squirrelly rule.
Apple is terribly inconsistent on this point. Some ad companies like AdMob and Medialets seem to have no trouble distributing precompiled code that downloads sophisticated ads from the Internet. These programs are explicitly designed to change their behavior after the fact, presumably against Apple's rules, but somehow Medialets has managed to interact with iPhones 1 billion times. And then there's the biggest reason of all: Mac and PC users survive with self-updating applications all of the time.
After a bit, I started bothering everyone I knew who worked at Apple to inform them of how arbitrary and infuriating the whole process could be. A few were polite, but they seemed to be tied up by the requirement to act like good corporate citizens.
There was one phone call from an Apple developer representative who told me that it was his job to deliver rejections by phone when they were too sensitive to travel by e-mail. There was, he said, a problem with giving my earnings to charity. Oh really? Was I supposed to spend it on cocaine and whores? No. I just couldn't mention the charity in the App Store listing. Why? Was this a version of the biblical imperative to give with your left hand so that your right hand doesn't know what is going on? He couldn't say. I was free to give the money, he said, and I could even mention this on my own blog, but I couldn't reveal it in the App Store.