protocol GameMode:class “You can limit protocol adoption to class types (and not structures or enumerations) by adding the class keyword must always appear first in a protocol’s inheritance list, before any inherited protocols”…
//协议(Protocols) import UIKit /*协议(Protocols) 1.协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法.属性,以及其他需要的东西 2.类.结构体或枚举都可以采纳协议,并为协议定义的这些要求提供具体实现.某个类型能够满足某个协议的要求,就可以说该类型“符合”这个协议. 3.除了采纳协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分要求或者实现一些附加功能,这样采纳协议的类型就能够使用这些功能. 协议定义语法:  protoco…
@objc protocol Transaction { func commit() -> Bool optional func isComplete() -> Bool } 以上协议被标示为@objc属性,使得它兼容Objective-c代码.如果协议拥有可选的协议或属性的话这是必须的,因为Swift要使用Objective-C运行时去检查类所遵守的可选方法是否存在. 不幸的是,这意味着拥有可选方法的协议只能被类遵守;结构和枚举不可以遵守包括可选方法的协议. 协议一般并不包括可选方法或属性,…
1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 nil 就是 Optional.Some. 可选类型是的数据如果不进行解包的话,它是一个 Optional 类型的数据,如果我们想要使用原来类型的数据,必须进行解包 2> 可选绑定 可选类型分为有值和没值,如果可选类型的变量没值时对其强制解包,程序就会崩溃,所以,强制解包是非常危险的如果不确定可选类型…
加上几个关节前Playground摘要码进入github在,凝视写了非常多,主要是为了方便自己的未来可以Fanfankan. Swift语法的主要部分几乎相同的. 当然也有通用的.运算符重载.ARC.补充倒闭之类的. 一.扩展(extension) 扩展 extension (类似OC中的分类, 但Swift中没有名字), 即在没有权限获取到原始代码的情况下, 为类添加新功能. 注意: 仅仅要定义了扩展, 那么该扩展对该类的实例都是可用的. extension SomeType{ //加入到So…
protocol和delegate完全不是一回事. 协议(protocol),(名词)要求.就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现. 委托(delegate),(动词)助手.顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理. 举个浅显的例子: 我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户.(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(del…
协议(Protocols) 协议仅是用定义某些任务或者是功能必须的方法和属性. 类似于java里的interface的作用.但协议并不会实现详细的功能. 我猜这个名字源于OO中提到的"契约".但我并不认为这名字非常好,反而是interface这名字更容被接受.由于我认为协议这个名字非常easy和网络编程的时候的网络协议搞混,网络协议也通常简称为协议. 语法: protocol MyProtocol {      //协议定义 } struct MyStruct: MyProtocol1…
protocol ['prəutəkɔl] (样例:http://blog.sina.com.cn/s/blog_6aafe9c90100yozz.html ) 一.说明  两个类进行通讯,用协议就比較方便.  1.协议声明了能够被不论什么类实现的方法  2.协议不是类,它是定义了一个其它对象能够实现的接口  3.假设在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议.  4.协议经经常使用来实现托付对象.一个托付对象是一种用来协同或者代表其它对象的特殊对象.  5:托付,就是调用自定…
Block ● Block封装了一段代码,可以在任何时候执⾏行 ● Block可以作为函数参数或者函数的返回值,⽽而其本⾝身又可以带输⼊入参数或返回值. ● 苹果官⽅方建议尽量多⽤用block.在多线程.异步任 务.集合遍历.集合排序.动画转场⽤用的很多 定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 Blocks的定义: int (^MySum)(int, int) = ^(i…
在Swift中协议不仅可以定义方法和属性,而且协议是可以扩展的,最关键的是,在协议的扩展中可以添加一些方法的默认实现,就是在协议的方法中可以实现一些逻辑,由于这个特性,Swift是可以面向协议进行编程的. 扩展协议和默认实现 protocol Record { var wins: Int{get} var losses:Int{get} func winningPercent() -> Double } struct BasketballRecord:Record,CustomStringCon…