canOpenURL 一个特殊的字符串崩溃
Posted
技术标签:
【中文标题】canOpenURL 一个特殊的字符串崩溃【英文标题】:canOpenURL a special string crash 【发布时间】:2014-04-25 08:58:29 【问题描述】:我遇到了一个棘手的问题。
NSURL *url = [NSURL URLWithString:@"numberplate://"];
if([[UIApplication sharedApplication] canOpenURL:url])
NSLog(@"it can");
只需创建一个空项目,将上面的代码插入到appdelegate.m
中didFinishLaunchingWithOptions
的方法中
我在模拟器上运行它,它运行正常。 我在我的设备上运行它,ios 7.0.4,它崩溃了。
但我在其他人的设备上运行它,它运行正常。
所以,问题只是出现在我的设备上。
另外,如果我将字符串 @"numberplate://"
更改为任何其他字符串,它也可以正常运行。
有人遇到过这个问题吗?
==========添加编辑==============
@demosten
@try
NSURL *url = [NSURL URLWithString:@"numberplate://"];
if([[UIApplication sharedApplication] canOpenURL:url])
NSLog(@"success");
@catch (NSException * e)
NSLog(@"Exception: %@", e);
@finally
NSLog(@"finally");
我像这样更改代码。但它无法捕获异常。
【问题讨论】:
什么是崩溃日志? 没有堆栈信息。只是有一个行指示器“EXC_BAD_ACCESS(code=1,address=0x442a6a0)” 您是否尝试过使用@try @catch
块? ***.com/questions/3363612/… 显示如何使用并提示如何在@catch
处理问题之前避免调试中断
不是字符串(我在运行 iOS 7 的 iPod 上检查过)
卸载“车牌号”应用程序是否也会崩溃?
【参考方案1】:
你的appDelegate中是否有任何自定义代码在下面的方法中?
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
不适当的处理程序可能是一个原因。
【讨论】:
不,如果我改变一个字符,代码如下所示,它运行正常。 NSURL *url = [NSURL URLWithString:@"numberplate11://"]; if([[UIApplication sharedApplication] canOpenURL:url]) NSLog(@"它可以"); 只要加上“11”或其他字符,也可以正常运行。以上是关于canOpenURL 一个特殊的字符串崩溃的主要内容,如果未能解决你的问题,请参考以下文章