Ok I've been developing iphone-apps for over a year now, but there's this one thing which still really sucks.
Let's say I want to make my app compatible with iOS 3.0 I set my sdk to the newest version available and set my deployment target to 3.0
But what happens, if you by accident call a function available only in ... 3.1.x or later? Right, it simply crashes.
There are no warnings or indicators telling you, that a function is only available in later iOS-Version. And since the Emulator doesn't support versions < 4.0 it's impossible to test if the application really works. You can't even buy a new device since they already have a newer iOS installed. And even if you have an older device it's sometimes almost impossible to check each and every part of your code.
And I really need to support older versions since I know that my customers (around 2/3) still use 3.x versions.
Isn't there ANY code-analyzer or something that scans the availability of all functions called within the app?
In one case the app crashed because I called
+ (id)sortDescriptorWithKey:(NSString *)key ascending:(BOOL)ascending
which i a convenience method of alloc +
- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending;
(Plus it's autoreleased) But sortDescriptorWithKey is only avaible in 4.0 @_@