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 可以为零吗?的主要内容,如果未能解决你的问题,请参考以下文章

openURL:在 iOS 10 中已弃用

iOS学习笔记3-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 备份大小都会增加