iOS:openURL 可以为零吗?
Posted
技术标签:
【中文标题】iOS:openURL 可以为零吗?【英文标题】:iOS: Can openURL ever be nil? 【发布时间】:2011-06-07 17:34:14 【问题描述】:对于-[UIApplicationDelegate application:openURL:sourceApplication:annotation:]
,URL 可以是nil
吗?我之所以问是因为我看到有人签了支票if (url) // ...
,但这不是不必要的吗?也就是说,这个方法不是总是被openURL
的非零NSURL
参数调用吗?
【问题讨论】:
【参考方案1】:假设一个外部调用(即来自另一个试图打开你的应用程序),那么我会假设它不是 nil,但是也许(我不太可能知道)你在内部调用它,在这种情况下它可能是?
然而假设是危险的!
因此,如果该值为 nil,则在执行可能导致崩溃的操作之前检查该值似乎是明智的。
如果你问我,似乎可以。
【讨论】:
【参考方案2】:根据Apple Documentation,url参数是:
表示 URL 的对象(通用 资源定位器)。见苹果网址 苹果注册方案参考 URL 的方案。
您必须注册您的应用程序才能接受特定的 URL。This article 显示了它是如何完成的。
这会让我相信除非它遵循应用程序指定的 URL 架构,否则不会调用此方法。
如果在内部调用它,那么您将知道是否需要检查 nil。至于调用它的外部应用程序,我不知道会发生什么。
【讨论】:
以上是关于iOS:openURL 可以为零吗?的主要内容,如果未能解决你的问题,请参考以下文章
iOS通过openURL打开原生应用与页面(包括电话,短信,safari等)
iOS AppDelegate.m:处理 openUrl RCTLinkingManager 和 Twitter - 方法 'application:openURL:options:' 的重复声明
'openURL'在iOS 10.0中已被弃用:请使用openURL:options:completionHandler:而不是在Swift 3中[重复]
ios - 每次触发 application:openURL:sourceapplication 时,iCloud 备份大小都会增加