1
votes

Sorry for the long post....

I'm trying to understand if the behavior I'm getting on my app is "normal". I have an app developed against the 2.0 sdk version (i.e. to make sure max #of devices can run it, as I don't use any "special" 3.0 features I tend to think the lowest denominator must be the best choice).

So In Xcode (latest version of xcode) I make sure everything is set towards the 2.0 api, including the framework references. I build and the thing runs fine on 2.1 device (hardware is the 1gen iPhone). Now i test it on a device that is old hardware (iPod touch) but latest software 3.0

The thing runs fine, but I experience different behavior in some places, example: 1) toolbar animation does not work 2) rotation behaves differently (rotating the device to the right shows my screen mirrored.. :-) which is "cool" but not desired

Now, I'm sure I can "hack" around and fix these issues, but something just doesn't make sense to me and it is usually where I know I don't understand something to its fullest,

THE QUESTION IS: isn't any device that runs something that was compiled against 2.0 must behave exactly the same regardless of its current software version/ hardware version? Isn't this the whole thing about backward compatibility? I would expect that 3.0 device running a 2.0 software would experience the exact same flow as a 2.0 device running a 2.0 software. What am I missing? and where is the lack of understanding from my side?

thanx, -tzurs

3
btw. if someone can comment on which framework versions they are adding in my situation I would be grateful. (that is, do you add frameworks from which path, 3.0 or 2.0) I would assume 2.0 but I don't know anything anymore..Tzur
You should always add from the base you are trying to compile against. The simplest way is to take a current framework, right click and "show in finder" - then drag in others you wish to use.Kendall Helmstetter Gelner

3 Answers

0
votes

Mostly it does behave the same, but there are some cases (especially around rotation) where it's simply a bit different. They also may well have re-ordered views in a toolbar or navigation bar so if you were manipulating subviews of those kinds of things directly, they will have changed.

It could also be you are relying on bugs that exist in 2.0 and if you do something the "correct" way you'll not have any issues from 2.0 to 3.0.

Around rotation specifically, if you are using shouldAutoRotate... as a trigger to do something look at using the rotation notifications instead.

0
votes

isn't any device that runs something that was compiled against 2.0 must behave exactly the same regardless of its current software version/ hardware version? Isn't this the whole thing about backward compatibility?

A bit tongue-in-cheek, but In the Microsoft world this would make sense. However, the Apple world doesn't traditionally place as much value on backward compatibility. Especially when it comes to behavior due to bugs in a previous release or due to using things in ways they weren't originally intended to be used.

0
votes

The easiest place to see what changed is the diffs, or differences. This are published as part of the documentation sets on each release and show what changed, and how to respond to supporting different versions. Also check out Apple's sample code on supporting multiple versions.