标签:
if let gestures = navigationController?.view.gestureRecognizers { for recognizer in gestures { if recognizer.isKindOfClass(UIScreenEdgePanGestureRecognizer) { scrollView.panGestureRecognizer.requireGestureRecognizerToFail(recognizer as! UIScreenEdgePanGestureRecognizer) println("Require UIScreenEdgePanGestureRecognizer to failed") break } } }
在网上有太多让人迷惑和错误的信息, 这次 WWDC 本身也没有去描述细节。幸运的是, 在 HOKO 我们在我们的智能链接上添加了这一特性, 所以我们可以无缝的引导用户到 APP 上。
什么是通用链接?
很显然 Apple 正在大力推动 APP 开发者在深层链接上有更好的体验。所有的消息都围绕着深层链接技术。与此同时, Apple 推出通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开网站和 APP。
通 过唯一的网址, 就可以链接一个特定的视图到你的 APP 里面, 不需要特别的 schema 。试想一下 Twitter 使用了通用链接, 那么你每在 twitter。com 点击一个链接, 你的 iOS 设备都会在 Twitter 里面自动打开这个页面, 而不是当你没有安装时转到普通的网页。这个用户体验是顺畅的, 最重要的是用户不会失去上下文(跳到 APP 后 Safari 上不再留下空标签)三:WKWebView
WKWebView 是苹果在 iOS 8 中引入的新组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老旧笨重特别是内存占用量巨大的问题。
苹果将 UIWebViewDelegate 与 UIWebView 重构成了 14 个类和 3 个协议, 引入了不少新的功能和接口,这可以在一定程度上看做苹果对其封锁 Web View 内核的行为作出的补偿:既然你们都说 UIWebView 太渣,那我就造一个不渣的给你们用呗~~ 众所周知,连 Chrome 的 iOS 版用的也是 UIWebView 的内核。
WKWebView 有以下几大主要进步:
将浏览器内核渲染进程提取出 App,由系统进行统一管理,这减少了相当一部分的性能损失。
js 可以直接使用已经事先注入 js runtime 的 js 接口给 Native 层传值,不必再通过苦逼的 iframe 制造页面刷新再解析自定义协议的奇怪方式。
支持高达 60 fps 的滚动刷新率,内置了手势探测。
在上面的两种用法中,错误都被丢弃。如果不丢弃,可以这样:
if (!(value = [instance request:blah withError:&error])) { ...print error and return/die... }
或者
if let value = instance.request(blah, error:&error) { ...success.. } else { ...print error and return/die... }
或者
do { let value = try instance.request(blah) } catch {... print error and return/die ...}
你工作所用的系统会自动把错误值归为nil的环境下。因此,你将得到:
Swift 的nullable optional类型和它的错误系统可以交互操作。例如,你可以编写throwing函数,并用if-let实现它。
函数调用的成功或者失败的关注点在于调用的上下文独立承担的错误报告。“我尝试做X这件事,但是它失败了”,传统的错误是描述哪里出错,但是现在描述的是你刚刚在做什么。
你失去的:
Cocoa-style错误处理。任何错误都会被忽略,你不会看到或知道它们。
错误来源信息例如文件/程序产成的问题。你知道的是调用栈出错,但是不知道原因也不知道如何出现的。
Railway/Freight Train-style开发模式,正如Jeremy Tregunna所说的那样,“作为单子输入和输出的代码,左边产生错误信息,右边产生成功的值;绑定函数和运算符,自动地从调用栈里面找到所有的错误”。
标签:
原文地址:http://www.cnblogs.com/stronger-ios-lcx/p/5635743.html