iPhone SDK

Anyone look at the iPhone SDK yet?

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.

Heh, last time I tried to program on a Mac, they still used Pascal for system programming.

At least they finally added garbage collection to Cocoa-programmed apps…

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.

No IPC, no running in the background = HUGE FAIL.

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.

Where did you think OS X came from? :)

At least they finally added garbage collection to Cocoa-programmed apps…

Sadly, not on the iPhone. Get ready for release() hell.

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.

Well, it was fun to mess around with Android a bit, but naturally the iPhone SDK is only for Macs. Oh well…

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/

New battery in the revised iPhone?

If the always-on connection is going to kill the battery, I’m not looking forward to running exchange on it.

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.

Ah, fantastic news then.

So does this mean the iPhone will finally support push email?

Yes. Exchange (Contacts, Email, Calendar), Cisco VPN and 802.11x were the big corporate features announced alongside the SDK.

I think it already did, but from limited hosts (yahoo?).