随笔分类 - swift
摘要:一、术语:指定类型 typealias:用于给关联类型指定类型; 通过类型推断给关联类型指定类型太过烧脑; 二、类型指定 1、具体类型实现协议后,直接指定;作为普通的泛型类型使用,指定类型即可; 2、将协议实现为泛型构造器,关联类型通过泛型构造器的输入类型指定; 3、关联类型本身有协议约束;需要先构
阅读全文
摘要:关联类型的形式为类型的引用进而进行约束提供了条件; 同时能够简化语法形式。 Swift: Associated Types http://www.russbishop.net/swift-associated-types Associated Types Series Swift Associate
阅读全文
摘要:都需要协议实现者提供具体变量; 否则认为不符合协议。 @protocol edddd <NSObject> @property(nonatomic, strong) NSObject *egooo; @end Auto property synthesis will not synthesize p
阅读全文
摘要:static与class 都有类型成员的含义;相对于实例成员; static的另一个意思是静态派发;所以不能被继承。 要使用动态派发和继承的机制必须使用class继承。 static的其它常见含义: 可见性;相当于private修饰符。 生命周期;
阅读全文
摘要:这篇文章不是针对当前版本 Swift 3 的,而是对预计于 2018 年发布的 Swift 5 的一些特性的猜想。如果两年后我还记得这篇文章,可能会回来更新一波。在此之前,请当作一篇对现代语言并行编程特性的不太严谨科普文来看待。 2016-12-20 • 能工巧匠集 CPU 速度已经很多年没有大的突
阅读全文
摘要:Some Objective-C APIs—like target-action—accept method or property names as parameters, then use those names to dynamically call or access the methods
阅读全文
摘要:swift的枚举模式是数据结构与操作结合的模式 1、enum本质是一个类型,可以定义变量; 它定义的变量可以用到其它变量用的的任何地方:函数的输入、输出、成员变量、临时变量等; 这个变量还可以带有附加信息:rawValue、关联值等; 枚举变量是一个变量,枚举变量是一个可以携带更多信息的变量; 2、
阅读全文
摘要:class baseGoo{ var isScannerRunning = false { willSet{ print(newValue) } } var desp:String = "" { willSet{ print(newValue) } } func testFun()->(){ des
阅读全文
摘要:func response(from resultObject: Any) throws -> Response { guard let dict = resultObject as? [String: AnyObject], let transaction = PendingTransaction
阅读全文
摘要:swift是静态语言,没有在运行时保存类型的结构信息(isa、class)。 一、self、Self、Type、typeof extension Collection where Self.Element == UInt8, Self.Index == Int public static func
阅读全文
摘要:简介 2014年,苹果公司在WWDC上发布Swift这一新的编程语言。经过几年的发展,Swift已经成为iOS开发语言的“中流砥柱”,Swift提供了非常灵活的高级别特性,例如协议、闭包、泛型等,并且Swift还进一步开发了强大的SIL(Swift Intermediate Language)用于对
阅读全文
摘要:For the longest time now, I thought that the two functions above were the same. But in actuality, while they may do exactly the same thing between ope
阅读全文
摘要:那么有什么因素会导致代码运行缓慢呢?当您在编写代码并选择架构的时候,深刻认识到这些架构所带来的影响是非常重要的。我将首先谈一谈:如何理解内联、动态调度与静态调度之间的权衡,以及相关结构是如何分配内存的,还有怎样选择最适合的架构。 内存分配 (1:02) 对象的内存分配 (allocation) 和内
阅读全文
摘要:类型擦除 但是在使用关联类型的时候需要注意当声明一个使用了关联属性的协议作为属性时,比如下面的代码: class stateDelegate<T> { var state: T var delegate: HTNState } <> { varvar 先会提示 no initializers 的错误
阅读全文
摘要:泛型和 Any 类型 这两个类型看起来很相似,但是一定要小心两者的区别。他们区别在于 Any 类型会避开类型的检查,所以尽量少用最好不用。泛型一方面很灵活一方面也很安全,下面举个例子感受下两者的区别: <T>_ -> T { //... return input; ( input: Any) ->
阅读全文
摘要:共享可执行文件 iOS 有沙箱机制,不能跨App间共享共态库,但Apple开放了App Extension,可以在App和Extension间共间动态库(这也许是Apple开放动态链接库的唯一原因了)。 http://blog.lanvige.com/2015/01/04/library-vs-fr
阅读全文
摘要:鉴于目前动态库在iOS App中使用越来越广泛,二进制的兼容问题可能会成为一个令人头疼的问题。本文主要对比一下C++、Java、Objecive-C和Swift的二进制兼容问题。 iOS端动态库使用情况 测试环境 C++、Java、OC和Swift分别实现Foo这个基类,然后再实现Bar这个子类,m
阅读全文
摘要:Closures Are Reference Types In the example above, incrementBySeven and incrementByTen are constants, but the closures these constants refer to are st
阅读全文
摘要:@autoclosure 在闭包前面加上@autoclosure func or(first:Bool,@autoclosure second:()->Bool) -> Bool { if first { return true } else { return second() } } 再来看下调用
阅读全文
摘要:函数类型(Function Types) 每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。 例如: 这个例子中定义了两个简单的数学函数:addTwoInts 和 multiplyTwoInts。这两个函数都传入两个 Int类型, 返回一个合适的Int值。 这两个函数的类型是 (Int,
阅读全文