现有计划没有';不要在iOS5上运行

现有计划没有';不要在iOS5上运行,ios5,incompatibility,Ios5,Incompatibility,我的两个程序在AppStore中可用数月,并且在iOS3和iOS4上运行时没有任何问题,但它们与iOS5不兼容 在我看来,苹果已经改变了一些事情,让开发者的生活变得更加艰难 其中一个问题是: - (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {

我的两个程序在AppStore中可用数月,并且在iOS3和iOS4上运行时没有任何问题,但它们与iOS5不兼容

在我看来,苹果已经改变了一些事情,让开发者的生活变得更加艰难

其中一个问题是:

- (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;
}
造成问题的原因是

NSString *link = [[request URL] absoluteString];
在我得到点击链接的未修改副本之前。在iOS3和iOS4中,它仍然是相同的。但在iOS5上,它仅转换为小写。 下一行

if ([link hasPrefix:@"playSound:"]) {
永远不会成为现实。所以我不得不把代码改成

- (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;
}
现在,我希望所有版本的iOS都使用小写字母,因此将其与小写字符串进行比较


您认为:在新的iOS版本上进行这样的更改是必要的吗?

这样的更改不是一时兴起的,但可能会出错。您能否显示[request URL]的结果以及对其调用absoluteString的结果?