6

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

在我看来,Apple 改变了一些东西,让开发者的生活变得更加艰难。

问题之一是:

- (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 版本上进行这样的更改?

4

0 回答 0