I have not had anything to do with Apple hardware for quite some time, but I took a quick glance at the SDK docs.
Objective C??? Really, I had no idea Objective C was still around. Does this mean that lots of other Apple applications use it? Really, I thought it went down with the NeXT…
(pause for wikipedia) Well, who knew, Apple updated it to “2.0” in 2006. Glancing at a quick overview of the language, it appears to be remarkably old-fashioned in many ways, including continued use of # directives and what appears to be a continuation of C style weak types.
Well anyhow, I suppose it’s got to be at least as easy to use as C++.
Anyhow, regardless of the quaintness of Objective C, what about the programming capabilities. Apparently applications will be entirely self-contained, with no sandboxing. Not a big deal for most practical purposes, but you can imagine various prospective interconnections to existing apps that would suffer due to inability to share data. Not exactly Unix philosophy. As for what you can actually code, and to what extent app code can access the hardware, I haven’t gotten that far yet…
I’m sure you discovered this on your trip to Wikipedia, but Objective-C bias is all over Mac OS X along with the corresponding OpenStep interfaces to everything.
I imagine they’re self-contained in the sense of all the libraries being statically linked (or if dynamically, bundled with the app). There’s no reason why you can’t do IPC.
I’ve only played around with the SDK a bit so I’m no expert here, but from what I understand you can only have one application running at a time, which is a pretty big detriment to IPC.
Yup. They don’t want you slowing down those iPhones and blaming Apple (a la Windows Mobile). Sucks, though, since unofficial apps run in the background.
I was hoping for an RSS client that would check in the background and then notify me (for example by vibrating) when it got a new item. But that is not going to happen.
As for my IPC comment earlier, it turns out they are fully jailed.
I (and apparently everyone else in the populated universe) am working on doing some iPhone development. This is my first experience working in any sort of Apple development, and it’s pretty fun. Objective-C is definitely different than what I’m used to (C++ with MFC mostly) - the syntax obviously borrows heavily from SmallTalk. What I like most, though, is that I’m actually learning something new, which I haven’t really had to do for years now. I’ve been coding C++ apps for a living for going on fourteen years now, and know some of the craziest minutia of MFC you could imagine, but going to Cocoa is like being a stranger in a strange land. It’s humbling, but more than a bit exciting, to see that there’s this entirely different world out there for application developers. After getting fed up with Microsoft recently (like, again, apparently everyone else in the populated universe), this is exactly what I needed to re-invigorate the late-night coder in me that I thought died years ago.
So here’s a comment from the Twitter guys about why background apps that check the network aren’t being allowed.
Based off experience with a jailbroken iPhone.
Twitterrific on the iPhone could definitely make use of a background process to gather new tweets. In fact, a prototype version of the software did just that. And it was a huge design failure: after doing XML queries every 5 minutes, the phone’s battery was almost dead after 4 hours. In fact, the first thing I said after giving Gruber this test version was “don’t use auto-refresh.”
The heart of the problem are the radios. Both the EDGE and Wi-Fi transceivers have significant power requirements. Whenever that hardware is on, your battery life is going to suck. My 5 minute refresh kept the hardware on and used up a lot of precious power.
Also, there are ways to get info from one app to the other. Look at the LaunchMe sample.
And the Gruber he’s talking about has plenty of good articles about it as well, the last five or so have all had to do with the iPhone SDK, largely involving the background app issue: http://daringfireball.net/archive/
Exchange runs on the server, not the phone. Also, push email initiates a connection to your phone from the server. The phone doesn’t need to constantly check for updates.