首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kingfisher源码阅读(一)

    Kingfisher是喵神写的一个异步下载和缓存图片的Swift库,github上将近3k的Star,相信不需要我再安利了。它的中文简介在这里,github地址在这里。...我始终觉得编程的精髓是抽象和模块化。阅读别人的代码也应该先从大处着眼,从抽象层面最高的地方开始,自顶向下地逐模块阅读。...KingfisherManager.sharedManager,显然是取KingfisherManaget的一个单例,Swift中的单例模式非常简单,因为有let可以声明imutable的属性,不用担心线程安全问题...Options(.None)), case .Options(let optionsInOptionsInfo) = optionsItem { //如果选项包含后台回调,则使用一个新线程...,否则使用默认queue(主线程) let queue = optionsInOptionsInfo.contains(KingfisherOptions.BackgroundCallback

    1.8K20

    Swift 2.2 最基本的多线程

    昨天晚上苹果召开了发布会,第二天除了知道 iPhone SE 和 IOS9.3 之外,你还记住了什么,这一天还是老样子,继续着我们的Swift的基本学习,但出现了许多的警告,进去看看文档宝宝才知道...Swift 3.0 要来了!...swift本来就是一个新的编程语言,虽然是苹果公司主推荐给开发者的,但毕竟是新的,才出了一年多,更新完善很正常,只有一款完善的语言,成熟的开发语言,才能做出更好的软件。。这你得相信。...今天就看看怎么用Swift 3.0 写最基本最基本的多线程。上代码,注释说明也全在代理里面,就不再说了,看代码,就够了!!宝宝下班咯。。...,UI的处理也必须回到主线程去处理。

    92470

    iOS 多线程之线程锁Swift-Demo示例总结

    线程锁是什么       在前面的文章中总结过多线程,总结了多线程之后,线程锁也是必须要好好总结的东西,这篇文章构思的时候可能写的东西得许多,只能挤时间一点点的慢慢的总结了,知道了线程之后要了解线程锁就得先了解一下什么是...这个时候线程B又来访问了,由于有了锁线程B就会等待线程A访问结束之后解开了“锁”线程B就可以接着访问这段代码了,这样就避免了在同一时间内多个线程访问同一段代码!      ...但我们是在Swift中来讨论线程锁的,这里也就不能再使用 @synchronized,因为在Swift中它是不在使用了的,相应代替它的是下面下面这两句:objc_sync_enter()  中间是你需要加锁的代码...你要是在OC的文件中只用的话你需要导入头文件:pthread.h 在Swift中就不用了,但是在使用的时候不管是OC的还是Swift的,代码是一致的,它的几个主要的方法就是下面三个,剩下的具体的代码可以看...试着模仿一下微信的UI的,包括聊天框架那部分,以前写过OC的,这次春被用Swift写一下,主要也是为了用一下Swift,以及看一下4.0它的一些新的特性,不然很久不写,一些东西比较容易遗忘!

    3.4K81

    Swift 反初始化

    反初始化 在类实例被释放的时候,反初始化器就会立即被调用。你可以是用 deinit 关键字来写反初始化器,就如同写初始化器要用 init 关键字一样。反初始化器只在类类型中有效。...反初始化器原理 当实例不再被需要的时候 Swift会自动将其释放掉,以节省资源。如同自动引用计数中描述的那样,Swift 通过自动引用计数(ARC)来处理实例的内存管理。...每个类当中只能有一个反初始化器。...你不能自行调用反初始化器。父类的反初始化器可以被子类继承,并且子类的反初始化器实现结束之后父类的反初始化器会被调用。父类的反初始化器总会被调用,就算子类没有反初始化器。...由于实例在反初始化器被调用之前都不会被释放,反初始化器可以访问实例中的所有属性并且可以基于这些属性修改自身行为(比如说查找需要被关闭的那个文件的文件名)。

    41510

    Swift2网络操作和异常处理

    相信写过Swift的人应该都知道Alamofire,它是AFNetworking的Swift版本,同一个作者写的。...的哲学,不过Swift一直很强调安全性,Apple显然也并不仅仅满足于让Swift困守iOS开发领域,加上早就公布了年底要开源,大家也很期待它作为一门通用编程语言在其他领域的作为。...HTTPMethod.POST, parameter: dict) { data in let json = JSON(data: data) //主线程进行...对了还有一点,我一开始用JSON(data: data)来初始化JSON数据的时候总是不成功,于是我看了下SwiftyJSON中JSON这个struct的构造函数,它先调用了苹果提供的class func...于是我索性把JSON的初始化函数改了: public init(data:NSData, options opt: NSJSONReadingOptions = [], error: NSErrorPointer

    2.5K10

    Swift基础 去初始化

    Swift基础 - 去初始化 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Deinitialization.html 在类实例被释放之前,会立即调用去初始化器...您使用deinit关键字编写去初始化器,类似于使用init关键字编写初始化器的方式。取消初始化器仅适用于类类型。...Deinitialization如何运作 Swift 会在不再需要实例时自动处理这些实例,以释放资源。Swift通过自动引用计数(ARC)处理实例的内存管理,如自动引用计数中所述。...您不得自己调用非初始化器。超类非初始化器由其子类继承,超类非初始化器在子类非初始化器实现结束时自动调用。总是调用超类非初始化器,即使子类不提供自己的非初始化器。...Player类还实现了去初始化器,该去初始化器是在Player实例被释放之前调用的。在这里,去初始化器只需将玩家的所有硬币退还给银行: var playerOne: Player?

    24800

    Kingfisher源码阅读(三)

    , completionHandler: CompletionHandler?...(nil, nil) sSelf = nil }) } }) } //调度到主线程队列,retrieveImageForKey...函数本身是在主线程中的,所以block会在retrieveImageForKey返回之后执行,而在执行之前,还可以被取消。...在UIImage+Extension文件中还有一些处理图片的扩展方法,诸如标准化图片格式、GIF图片的存储、GIF图片的展示等等我也不细讲了,这些都算是一些套路上的东西,正确调用苹果给的API就好了。...文件操作相关知识(遍历文件、跳过隐藏文件、按日期排序文件等等) 图片处理相关知识(判断图片格式、处理GIF等等) MD5摘要算法(这个我并没有仔细看) Associated Object的运用 对了,最后的最后,Swift

    92540
    领券