我在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版本上进行此类更改?