CS193笔记 第七讲 错误处理,扩展,委派和滚动视图

本讲首先介绍了Swift中的错误处理机制,然后讲解了几个相关的概念extension,protocol和delegate,最后通过一个演示项目展示了如何在项目中使用scrollView。演示项目的名称叫Cassini, 这是一艘木星探测器的名字。Cassini 已经完成了它的使命,即将(2017.9)飞进土星执行自杀任务结束整个土星探测任务。

错误处理机制(Error Handling):当某一方法在执行时遇到不能由自身处理的情况时,可以抛出一个响应的错误。这个错误由程序的其它部分捕捉到后进行响应的处理。这样的方法在声明的结尾处用 throws 表明会有错误抛出。

<pre>func foo() throws

do {
try context.foo()
} catch let error {
throw error
}</pre>

Extension 扩展:
简单来说,利用 Extension,可以实现。
限制,不能有存储属性的

Protocols (协议)
Protocol 定义了一个属性和方法的集合。一个类实现了某个Protocols,那么它的所有子类也自动实现了该Protocols,但构建函数除外。

protocol是一个类型。也就是说可以指定某个函数的某个参数满足一个甚至多个protocols. 用 & 连接多个 protocols。

<pre>
protocol SomeProtocol : InheritedProtocol1, InheritedProtocol2 {
var someProperty: Int { get set}
func aMethod(arg1: Double, arg2: String) -> Sometype
mutating func changeIt()
init(arg: Type)
}
</pre>

Swift的所有标准库,Array, Dictionary 都是用 protocol 实现的。protocol 可以在应用泛型时起到一定的限制作用。例如

<pre>public struct Range<Bound : Comparable> {
...
}

public protocol Comparable : Equatable {
...
}

public protocol Equatable {
public static func ==(lhs: Self, rhs: Self) -> Bool
}</pre>

protocol 允许多重继承。

Delegate

Scroll View:滚动视图

可以从 “https://github.com/mayongl/CS193P” 下载本讲的代码。
any time you may need calling an outlet during prepare, optional chain them.
<pre>
class ImageViewController: UIViewController {
...
@IBOutlet weak var scrollView: UIScrollView! {
didSet {
scrollView.delegate = self //设置被缩放的视图
scrollView.maximumZoomScale = 1.2 //设置缩放的最大比例
scrollView.minimumZoomScale = 0.03 //设置缩放的最小比例
scrollView.contentSize = imageView.frame.size //设置被显示视图的实际大小
scrollView.addSubview(imageView)
}
}
fileprivate var imageView = UIImageView()
...
}

extension ImageViewController : UIScrollViewDelegate
{
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
}
</pre>

fileprivate
extension

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,225评论 4 61
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI下拉刷新模糊效果A...
    袁俊亮技术博客阅读 14,109评论 9 105
  • 当前教育界,很像演艺圈,想有话语权,好,拿演技来,演技好了,得到承认了,就有话语权了,就成专家了,且是全能专家,比...
    yhj灵阅读 1,436评论 0 0
  • 麦子被晒在路上,它们终于熟了等待被晾干、磨碎去做食物该做的事 麦子是可以咀嚼的没有想象得香甜但超出想象的是,它们那...
    unity的简书阅读 1,521评论 0 0
  • 2017.09.23 天气:晴 心情:开心 早起:5:30 早睡:22:30 【学习成长】 清晨参加了晨间...
    爱笑的玉荣阅读 1,423评论 0 0