Existing program doesn't run on iOS5
Two of my programs available in the AppStore for months and running without any problems on iOS3 and iOS4 are not compatible with iOS5.

It seems to me that Apple has changed some things to make the life of developers a little bit harder.

One of the problems is this:

    - (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
    	// Only do something if a link has been clicked
    	if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    		NSString *link = [[request URL] absoluteString];
    		if ([link hasPrefix:@"playSound:"]) {
    			[PlayAudio playAudio: [link substringFromIndex:10]];
    			return NO;
    		}
    	}
    	return YES;
    }

The line that make the problem is

    NSString *link = [[request URL] absoluteString];

Before I got an unmodified copy of the clicked link. In iOS3 and iOS4 it is still the same. But on iOS5 it is converted to lowercase only.
The next Line

    if ([link hasPrefix:@"playSound:"]) {

never becomes true. So I had to change the code to

    - (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
    	// Only do something if a link has been clicked
    	if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    		NSString *link = [[[request URL] absoluteString] lowercaseString];
    		if ([link hasPrefix:@"playsound:"]) {
    			[PlayAudio playAudio: [link substringFromIndex:10]];
    			return NO;
    		}
    	}
    	return YES;
    }

Now I'm expecting lowercase on all versions of iOS and therefore compare with a lowercase string.


What do you think: Are changes like this on a new iOS version neccessary?


Existing program doesn't run on iOS5
===

Two of my programs available in the AppStore for months and running without any problems on iOS3 and iOS4 are not compatible with iOS5.

It seems to me that Apple has changed some things to make the life of developers a little bit harder.

One of the problems is this:

    - (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
    	// Only do something if a link has been clicked
    	if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    		NSString *link = [[request URL] absoluteString];
    		if ([link hasPrefix:@"playSound:"]) {
    			[PlayAudio playAudio: [link substringFromIndex:10]];
    			return NO;
    		}
    	}
    	return YES;
    }

The line that make the problem is

    NSString *link = [[request URL] absoluteString];

Before I got an unmodified copy of the clicked link. In iOS3 and iOS4 it is still the same. But on iOS5 it is converted to lowercase only.
The next Line

    if ([link hasPrefix:@"playSound:"]) {

never becomes true. So I had to change the code to

    - (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
    	// Only do something if a link has been clicked
    	if (navigationType == UIWebViewNavigationTypeLinkClicked) {
    		NSString *link = [[[request URL] absoluteString] lowercaseString];
    		if ([link hasPrefix:@"playsound:"]) {
    			[PlayAudio playAudio: [link substringFromIndex:10]];
    			return NO;
    		}
    	}
    	return YES;
    }

Now I'm expecting lowercase on all versions of iOS and therefore compare with a lowercase string.


What do you think: Are changes like this on a new iOS version neccessary?

