在Swift语言中,协议定义类或结构体应该遵守的变量和方法集合,如下所示,这个一个标准的协议的声明: protocol NSObjectProtocol { func isEqual(object: AnyObject?) -> Bool var hash: Int { get } var superclass: AnyClass? { get } func `self`() -> Self! func isProxy() -> Bool func isKindOfClass(aClas…
这几个概念让人很迷惑,看了很多帖子,终于搞明白了,简单总结: Any 和 AnyObject 是 Swift 中两个妥协的产物.什么意思呢,oc中有个id关键字,表示任何对象,oc和swift混编的时候拿什么对应id呢?就发明出来了AnyObject.但是!oc中的NSString,NSArray等都是class,但是在swift中String,Array都是struct,这个怎么办呢,混编的时候NSString等类型对应的id就不能用AnyObject了,为了填坑,又搞出来个Any,表示任意类…
Swift try try! try?使用和区别 一.异常处理try catch的使用 1. swift异常处理 历史由来 Swift1.0版本 Cocoa Touch 的 NSError ,Swift并没有真正的具备自己的异常处理机制 Swift2.0版本 加入 ErrorType protocol Swift3.0版本 改名 Error protocol 2. Swift3.0 Error protocol 的使用 首先定义一个枚举,集成协议Error (Swift 2.0 的协议叫做Err…
在 Swift 中能够表示 “任意” 这个概念的除了Any .AnyObject以外,还有一个AnyClass. Any.AnyObject.AnyClass有什么区别: AnyObject是一个成员为空的协议,任何对象都实现了这个协议. Any是一个空协议集合的别名,它表示没有实现任何协议,因此它可以是任何类型,包括类实例与结构体实例. AnyClass是AnyObject.Type的别名而已. 1.AnyObject 本身就是一个接口,而且所有的class都隐式的实现了这个接口,这也限制了A…
一.前奏 Swift作为一门新语言,经过几年的发展,逐渐趋于完善,目前已经更新到3.0版本,它汇集许多其他语言的特点,例如JS.Paython.C++等,完全区别于OC.个人感觉它没有完全的OOP和OOD的性质. 二.谈谈几种属性的区别 存储属性 定义:实实在在存储常量和变量的 计算属性 定义:依赖于存储属性,通过计算得出来,它提供getter访问值,提供setter方法间接给其他属性或者变量设置值 类属性 定义:其本质其实就是一个全局属性,在类里限定了其作用域,用关键字static(用于结构体…
 as  :类型一致或者子类 仅当一个值的类型在运行时(runtime)和as模式右边的指定类型一致 - 或者是该类型的子类 - 的情况下,才会匹配这个值.如果匹配成功,被匹配的值的类型被转换成as模式左边指定的模式. class Animal {} class Dog: Animal {} let d = Dog() d as Animal  as! 父类强转子类 class Animal {} class Dog: Animal {} let a: Animal = Dog() a as!…
类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承和扩展,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型.所以类的赋值是传递引用,结构体则是传值. 相同点: 1,定义属性用于储存值2,定义方法用于提供功能3,定义下标用于通过下标语法访问值4,定义初始化器用于生成初始化值…
  可选类型(?)与强制解析运算符(!) ?是一种判断后再拆包的语法糖 !是一种强制拆包的语法糖   当你不确定有值的时候就可以用  ? 当你确定有值的时候可以用  !     ?的几种使用场景:1.声明Optional值变量2.用在对Optional值操作中,用来判断是否能响应后面的操作3.用于安全调用protocol的optional方法4.使用 as? 向下转型(Downcast)   !的使用场景1.强制对Optional值进行拆包(unwrap)2.声明Implicitly Unwra…
1.as的使用场合 1.从派生类转换为基类,向上转类型(upcasting) class Animal{} class Dog:Animal{} let cat = ANimal() let dog = cat as Dog 2.消除二义性,数值类型转换 let num1 = 4 as Int let num2 = 5.09 as CGFloat 3.switch语句中进行模式匹配 如果不知道一个对象是什么类型,可以通过switch语法检测他的类型,并且尝试在不同类型下使用对应的类型进行相应的处…
一.Swift与OC区别: 1.swift程序的入口是UIApplicationMain; 2.OC的类是以.h和.m组成的;swift是一.swift结尾的; 3.OC的类是以@interface和@end开始结尾;swift是采用{}; 4.OC里语句结束以分号(;);swift里不需要分号,添加分号也不会出错; 5.OC中创建一个视图,采用alloc/init,swift采用(); 6.OC中创建视图采用initWithXXX;swift里变成(XXX:) 7.swift设置属性,全面采用…