分类 iOS 下的文章

swift中weak和unowned的区别

weak和unowned都是解决循环引用的关键字 区别: 如果您是一直写 Objective-C 过来的,那么从表面的行为上来说 unowned 更像以前的 unsafe_unretained,而 weak 就是以前的 weak。 用通俗的话说,就是 unowned 设置以后即使它原来引用的内容已经被释放了,它仍然会保持对被已经释放了的对象的一个 “无效的” 引用,它不能是 Optional 值,也不会被指向 nil。如果你尝试调用这个引用的方法或者访问成员属性的话,程序就会崩溃。 而 weak 则友好一些,在引用的内容被释放后,标记为 weak 的成员将会自动地变成 nil (因此被......


swift 关键字篇

@noescape:no escape(没有逃脱) 用来修饰闭包,含义为非逃逸闭包。 当闭包作为参数传递进函数时,如果这个闭包只在函数中被使用,则开发者可以将这个闭包声明成非逃逸的,即告诉系统当此函数结束后,这个闭包的生命周期也将结束,这样做的好处是可以提高代码性能,将闭包声明成非逃逸的类型使用@noescape关键字。 (1) 默认,swift 3.0 弃用,函数结束后,这个闭包的生命周期也将结束。 (2) 在其内部如果需要使用self这个关键字,self可以被省略。 @escaping 逃逸闭包 逃逸的闭包常用于异步的操作,这类函数会在异步操作开始之后立......



struct 和class的区别

struct是值类型,值类型在传递和赋值时将进行复制。 class是引用类型,引用类型只会使用引用对象的一个『指向』 class有这几个功能struct没有的: class可以继承,这样子类可以使用父类的特性和方法 类型转换可以在runtime的时候检查和解释一个实例的类型 可以用deinit来释放资源 一个类可以被多次引用 struct也有这样几个优势: 结构较小,适用于复制操作,相比于一个class的实例被多次引用更加安全 无须担心内存memory leak或者多线程冲突问题 顺便提一下,array在swift中是用struct实现的。Apple重写过一次array,然后复......


函数式编程

避免使用程序状态和可变对象,是降低程序复杂度的有效方式之一,而这也正是函数式编程的精髓。 函数式编程强调执行的结果,而非执行的过程。 我们先构建一系列简单却具有一定功能的小函数,然后再将这些函数进行组装以实现完整的逻辑和复杂的运算,这是函数式编程的基本思想。


Swift与Objective-C的兼容方法:@objc和Dynamic

Swift必须考虑与Objective-C的兼容。 首先通过添加{product-module-name}-Bridging-Header.h文件,并在其中填写想要使用的头文件名称,我们就可以很容易地在Swift中使用Objective-C代码了。Xcode为了简化这个设定,甚至在Swift项目中第一次导入Objective-C文件时会主动弹框进行询问是否要自动创建这个文件,可以说是非常方便。 但是如果想要在Objective-C中使用Swift的类型的时候,事情就复杂一些。如果是来自外部的框架,那么这个框架与Objective-C项目肯定不是处在同一个target中的,我们需要对外部的Swift module进行导入。这个......


swift 中初始化ViewController

let vc = NameVC() init(title: String){ super.init(nibName: nil, bundle: nil) self.title = title } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }




© 2016 范子-金玉游龙 . 由 WordPress 强力驱动 | Theme By Jimmy & PCDotFan