4。iOS 进阶知识—回顾iOS进阶之路实用工具

iOS进阶

2018-01-09  本文已影响551人  5fc9b6410f4f

PPAsyncDrawingKit - 实现了一系列基础 UI 控件的轻量级 ASDK

一款轻量级的 ASDK,实现了一系列基础 UI 控件。


iOS 开发之 Runtime 常用示例总结


经常有小伙伴私下在 Q 上问一些关于 Runtime 的东西,问我有没有 Runtime 的相关博客,之前还真没正儿八经的总结过。之前只是在解析第三方框架源码时,聊过一些用法,也就是这些第三方框架中用到的 Runtime。比如属性关联,动态获取属性等等。本篇博客就针对 Runtime 这个主题来总结一些其常用的一些方法,当然 “空谈误国”,今天博客中所聊的 Runtime 依然要依托于本篇博客所涉及的 Demo。


[译] Swift - 请求行为


当触发网络请求时,通常会引发许多副作用。然而,副作用对于系统的可测试性来说就是一剂毒药,并且可能会因应用程序和请求的不同而出现差异性。如果我们创建一个系统用来容纳这些副作用的组合,就可以提高系统的可测试性和其他特性。


iOS 的 Cookie 存取看我绝对够!!


关于 WKWenView/UIWebView cookie 存取的总结


手机天猫解耦之路


本文标题是解耦,聊解耦可以有很多方法,本文以架构进化为线索给各位分享手机天猫的解耦之路。


Swift 对象内存模型探究(一)


本文将通过探究 Swift 对象内存模型机制,简单介绍 HandyJSON 实现原理.


快来看看 Google 出品的 Protocol Buffer,别只会用 JSON 和 XML 了


前言 习惯用 Json、XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比 Json、XML 真的强!太!多! 由于 Google出品,我相信Pro…


iOS~ 用 UICollectionView 实现酷炫的推拉效果


照片推拉切换的浏览效果的实现。


解析器组合子


在实现小巧的JSON解析器的过程中,体会函数式编程的含义。


CFNetwork 框架


CFNetwork 是一个高性能的低级框架,可以控制一些更底层的东西,如各种常用网络协议、socket 通讯等,实际上除了 socket 是传输层之外,本质上还是应用层上的封装的通用 API。使用者可以不用关心底层协议的实际细节。


Swift 中的指针


指针是 C / C++ 中一个很重要的概念,是这些相对低级的语言的灵魂,然而 Swift 似乎天生对指针十分不友好,繁琐的用法让很多初学者一上来十分摸不着头脑。本文就简单谈谈 Swift 中指针的一些用法。


ReactiveCocoa 中 奇妙无比的 “宏” 魔法


前言 在 ReactiveCocoa 中,开源库作者为我们提供了很多种魔法,“黑”魔法,“红”魔法…… 今天就让先来看看 “红” 魔法。 在 ReactiveCocoa 中,封装了很多非常实用的 “宏”,使用这些“宏” 为我们开发带来了很多的便利。 今天就来盘点一下 RAC 中的宏是如何实现的。…


从源码看 Block


从 iOS 的底层实现以及 clang 对 Block 的转换来理解 Block


[iOS] 谈谈iOS多线程的锁


iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知半解,于是决定整理一下关于iOS中锁的知识,为大家查缺补漏。 在过去几十年并发研究领域的出版物中,锁总是扮演着坏人的角色,锁背负的指控包括引起死锁、锁封护(luyang注…


编写整洁的 TableView 代码 -- 基于 Block 的 TableView/CollectionView 数据源封装


将 Table view 的数据源和代理方法,封装到独立的类中


谈谈 iOS 中图片的解压缩


对于大多数 iOS 应用来说,图片往往是最占用手机内存的资源之一,同时也是不可或缺的组成部分。将一张图片从磁盘中加载出来,并最终显示到屏幕上,中间其实经过了一系列复杂的处理过程,其中就包括了对图片的解压缩。


iOS-线程安全


多线程技术对于计算机开发带来了巨大的性能提升,同样也来带了新的伤痛——线程安全问题。在开发中,稍不注意,我们就可能写出让代码陷入不安全的境地,线程锁是一种用来帮助我们保护临界资源的手段。事实上,现代语言提供了多种不同的线程锁来保护代码。通过深入挖掘,可以发现线程锁的核心无非是Co


iOS - 小红书欢迎页动画剖析


闲来无事时读到移动开发前线的这篇文章,里面介绍了一些小红书开发者的相关心得。
小红书的欢迎相关界面相关效果很棒,忍不住想模仿着做一下。


iOS - RxSwift 项目实战记录


Moya是基于Alamofire的网络请求库,这里我使用了Moya/Swift,它在Moya的基础上添加了对RxSwift的接口支持。接下来我们来说下Moya的使用 如果你想用传统的方式也行,不过这就失去了使用RxSwift的意义。好吧,我们接下来说说如何优雅的来实现table…


iOS (仿印物App)TableView给力动画的简单实现


前言: 之前看见的印物App里的定制模块的TableView效果还是不错的,所以仿这个App实现了最主要的亮点之一TableView 滚动效果(层叠效果)。cell中的细节功能是没有添加的, 需要的话大家可以自己进行扩展添加! 效果图: 功能实现: 首先TableView与ce…


Creating Custom UIViewController Transitions


如何使用 UIViewController Transitions


谈谈 MVX 中的 Model


在大多数 iOS 的项目中,Model 层只是一个单纯的数据结构,你可以看到的绝大部分模型都是这样的,模型起到了定义一堆『坑』的作用,只是一个简单的模板,并没有参与到实际的业务逻辑,只是在模型层进行了一层抽象,将服务端发回的 JSON 或者说 Dictionary 对象中的字段一一取出并装填到预先定义好的模型中。


RxSwift 基础


在 iOS 开发过程中,我们几乎无时无刻都要面对异步事件的处理。例如,按键点击、数据保存、、音频后台播放、交互动画展示。这些事件并不具备特定时序性,甚至它们可能同时发生。 虽然 Apple 提供了通知、代理、GCD、闭包等异步机制,但是这些机制缺乏一个统一的抽象表述。另外,这些…


闲聊内存管理


ARC 作为一个老生常谈的话题,基本被网上的各种博客说尽了。但是前段时间朋友通过某些手段对 YYModel 进行了优化,提高了大概 1/3 左右的效率,在观赏过他改进的源码之后我又重新看了一遍 ARC 相关的实现源码,主要体现 ARC 机制的几个方法分别是 retain、release 以及 dealloc,主要与 strong 和 weak 两者相关


Swift World: Equatable, Comparable and Hashable Part 3


In previous parts, we covered Equatable and Comparable. This article is the last one of this serial and we will talk about Hashable. The direct purpose to make our custom type hashable is to use it in a Set or Dictionary. But you can find more while using Swift.


iOS内存管理机制分析


从底层分析arc和mrc


iOS 手把手搭建 · 无限循环滚动视图


在大多数常规 App 开发当中,我们都会有产品运营栏的需求,也就是列表页或者产品顶部,又或者整个页面需要展示几个滚动的运营活动、产品、广告什么的,当然,也可能是一个自己实现的一个图片浏览器。
在早些年,这类需求大多都是从 First 逐个滚动到 Last,然后再自动滚到 First,技术上无非都是通过 UIScrollView + Timer 的方案,iOS 开发往往都喜欢专注于用(xuan)户(ji)体(zhuang)验(bi)的,所以后来出现了无限循环滚动的体验。


iOS AutoLayout 中的 Content Hugging 和 Content Comp.


我这里我就说下怎么使用代码设置优先级作为补充。用代码设置布局一般都使用 masonry,所以我就在使用 masonry 的基础上写 demo。


深入研究 Block 用 weakSelf、strongSelf、@weakify、@strongify 解决循环引用


清晰易懂的 block 深度研究。


基于 Alamofire 的一个网络请求的封装,包括闭包回调 和 成功或失败代理方法


很方便


iOS 从源码深入探究weak的实现 | 掘金技术征文


关于weak的知识我就不再多说,直接开始我们的源码分析之旅 __weak id __week obj1 = obj;编译器的模拟代码 id obj1; obj1 = 0; objc_storeWeak(&obj1, obj); objc_storeWeak(&obj1, 0);…


谈谈组件封装的思路和实现 - PSCarouselView


组件的封装是开发中比较有趣的一件事。今天我们就拿轮播控件举例,聊聊组件的封装。


嵌套UIScrollview的滑动冲突解决方案


虽然苹果建议我们不要嵌套 UIScrollview ,但是这话到底是对开发者说的,架不住设计师就是要这么画设计图。我遇到的场景类似这样,顶部有一个优先展示的封面,当封面滚出屏幕后下面内容的 ScrollView 开始滚动。因为介绍、目录、评价三个tab是可以左右滚动的,所以具体…


谈谈 iOS 中粘性动画以及果冻效果的实现


一个拥有多种动画效果的自定义UIPageControl。粘性动画中,粘性小球会根据移动距离的大小拥有不同的弹性程度。移动距离越大,弹性效果越明显。很好玩。


iOS 开发 UIScrollView 的底层实现 - 你也可以自己实现一个 scrollView


在 iOS 开发中我们会大量用到 scrollView 这个控件,我们使用的 tableView/collectionview/textView 都继承自它。scrollView 的频繁使用让我对它的底层实现产生了兴趣,它到底是如何工作的?如何实现一个 scrollView?读完本篇博客,相信你一定也可以自己实现一个简易的 scrollView。


[译] 带有关联类型的协议是什么样的?


最近我做了一个关于带有关联类型的协议(PATs, Protocols with Associated Types)的演讲,我本来还觉得观众对这个已经耳熟能详了,但事实却相反。
很多人并不知道 PATs 是什么——这我应该预料到的,因为我自学就用了一段时间。因此我想当面讲解下,尤其是这些东西比较难理解,而且我也没能找到很好的解释。


一步一步构建你的 iOS 网络层 - TCP 篇


本文基于 CocoaAsyncSocket 从 TCP 连接的建立到请求结果的处理为你概述如何构建一个方便易用的 iOS 网络层


答卓同學 Swift 面試題


答卓同學 Swift 面試題


KVO这种黑科技 | coderyi


iOS中KVO这种黑科技


iOS 黑科技【动画特效篇 - 3】 滚动字幕 --ScrollCanvas


这一期带来一款应用非常实用的控件,滚动字幕,可以应用在新闻、财经、聊天等各类 APP 上,B 格瞬间提升了一个档次有木有


iOS UIScrollView 分页滑动宽度自定义实现


App 中最常用 轮播图, 关于它的实现有很多方法 如 : Anination, UIScrollView, UICollectionView . 动画是另一种思路, UICollectionView 继承于 UIScrollView. 作者今天就用 UIScrollView 讲一下 , 分页效果下 滑动宽度小于屏幕宽度 露出上下页内容, 或 滑动视图之间 间隙问题


iOS 中的 block 是如何持有对象的


关注仓库,及时获得更新:iOS-Source-Code-Analyze Follow: Draveness · Github Block 是 Objective-C 中笔者最喜欢的特性,它为 Objective-C 这门语言提供了强大的函数式编程能力,而最近苹果推出的很多新的 …


SDWebImage 源码解读之 NSData+ImageContentType


iOS 判断图片格式方法


[译] 在 Swift 3 上对视图控件实践面向协议编程


看完这篇文章你将会明白如何使用协议给 UIButton, UILabel, UIImageView 等 UI 组件添加动画,同时我也会给你演示传统方法和使用 POP 方法之间的差异。😎


iOS - 实现映客首页 TabBar 和滑动隐藏 NavBar 和 TabBar


之前在做直播的时候,参照了映客 App,发现其首页的效果还挺不错,在网上找了一下相关仿映客 App 代码和博客,大部分都是说如何播放直播流和推流,对于 UI 这块甚少,所以我自己花了点时间研究了一下映客的首页 UI 效果。


iOS 实践:通过核心动画完成过山车


之前在一个网站上看到了一个 HTML5/SVG 实现的过山车动画,点这里看网页版。 觉得很棒,想想咱们 iOS 也完全可以实现,正好还可以全面回顾一下之前分享过的关于 iOS 中间动画系列会使用到的各个内容。不过今天的内容稍微有点多,我呢尽量只说最重要的部分,这里面所有的内容都是通过代码绘制出来的。


Objective-C 中的消息与消息转发 | Garan no dou


objective-c的这种有趣的语法被苹果称为“发消息”。与其他面向对象语言(C++/Java)的“方法调用”不同,objc的消息机制是由运行时实现、非常灵活动态。这篇文章简单记录一下objc运行时对于消息发送和转发的实现。


教你从 0 到 1 如何实现组件化架构


组件化需要大项目来实践


iOS 开发 - 探索 scrollView 的实现


探究 scrollView 的实现方式,自定义 scrollView


iOS 开发 - 链式实现数据源


链式调用 chained calls 指在函数调用返回了一个对象的时候使得这个调用链可以不断的调用下去,从概念上可以看做是一环扣一环的铁链,也能被称作方法链调用。


Objective-C 中的 NSPredicate


Cocoa 提供了一个名为 NSPredicate 的类,它用于指定过滤器的条件。可以创建 NSPredicate 对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。这里的 “谓词” 通常用在数学和计算机科学概念中,表示计算真值或假值的函数。


介绍一种 iOS 中实现完全自定义导航栏的思路


开源一个位于底部的 iOS 导航栏 Tiptoes,让用户专注于屏幕内容本身,制造沉浸式体验。使用最新的 Swift 3。


iOS 绘图: 带动画的天气24小时走势图


一个 24 小时天气折线图 (仿墨迹天气),效果萌萌的


Swift3.0 网络框架封装


使用 Swift3.0,基于 Alamofire4.0+、SwiftyJSON 封装的网络中间层,提供快速缓存策略,帮助日常开发。


实现外卖选餐时两级 tableView 联动效果


最近实现了下饿了么中选餐时两级 tableView 联动效果。


ios - 分类为什么不生成 setter/getter


一次 codereview 的思考与实践


把握 AFNet 网络请求完成的正确时机


对于 iOS 开发中的网络请求模块,AFNet 的使用应该是最熟悉不过了,但你是否把握了网络请求正确的完成时机?本篇文章涉及线程同步、线程依赖、线程组等专用名词的含义,若对上述名词认识模糊,可先进行查阅理解后阅读本文。如果你也纠结于文中所述问题,可进行阅读希望对你有所帮助。


深度学习与 App 的魔幻结合


这是一篇关于 iOS 的 App 与深度学习结合应用的 demo 例子,将深度学习应用到 iOS 应用中。通过深度学习训练的 App,能够识别红绿交通灯。


dispatch_async 的 block 中是否该使用_weak self


问题分析 我看过很多文章关于在 dispatch_async 的 block 里面使用_weak self, 但是让我疑惑的是,以下代码是否需要必须使用_weak self, 因为我也看到了很多观点说,在有些情况下不需要使用__weak self. self.myQueue = dis…


iOS 性能优化总结


关于 iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局优化、电量优化、 安装包瘦身、启动优化、网络优化等


iOS 股票 K 线图绘制


iOS 平台下 K 线绘制,长按高亮,放大缩小,横竖屏切换,流畅丝滑。

上一篇 下一篇

猜你喜欢

热点阅读