ios源码

SDWebImage4.0.0 源码解析

放肆的年华 提交于 2020-03-07 18:38:03
在开发 iOS 的客户端应用时,经常需要从服务器下载图片,虽然系统提供了下载工具:NSData、NSURLSession等等方法,但是考虑到图片下载过程中,需要考虑的因素比较多,比如:异步下载、图片缓存、错误处理、编码解码等,以及实际需要中根据不同网络加载不同画质的图片等等需求,因此下载操作不是一个简单的下载动作就可以解决。 针对上述问题,目前常用的开源库就是 SDWebImage ,它很好的解决了图片的异步下载、图片缓存、错误处理等问题,得到了广泛的应用,使得设置 UIImageView 、 UIButton 对象的图片十分方便。本文就从源码的角度,剖析一下这款优秀的开源库的具体实现。 类结构图 SDWebImage 的源码的类结构图和下载流程图在官方的 说明文档 里有介绍,通过 UML 类结构图详细的介绍了该框架的内部结构,以及通过流程图介绍了具体的下载过程。 下图是我总结的 SDWebImage 的结构图,简单的把 SDWebImage 源码文件按照功能进行了划分,方便在阅读源码时,能快速的对源码有一个总体的认识,加快阅读效率。 ![](//upload-images.jianshu.io/upload_images/1843940-c51585b28704fae9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

(素材源码)猫猫学IOS(十七)UI之纯代码自定义Cell实现新浪微博UI

最后都变了- 提交于 2020-02-27 03:08:47
猫猫分享,必须精品 素材代码地址: http://download.csdn.net/detail/u013357243/8580249 原文地址: http://blog.csdn.net/u013357243?viewmode=contents 先看效果图 编程思路 代码创建Cell的步骤 1> 创建自定义Cell,继承自UITableViewCell 2> 根据需求,确定控件,并定义属性 3> 用getter方法完成控件的实例化,只创建并添加到contentView,不处理位置 4> 定义一个模型属性,通过setter方法,设置cell的显示 昵称正文字符串的位置算法 设置大小由文字的长度决定 用字符串方法:[@"" boundingRectWithSize:(CGSize) options:(NSStringDrawingOptions) attributes:(NSDictionary *) context:(NSStringDrawingContext *)] //boundingRectWithSize计算给定文字字符串所占的区域,返回是一个x,y为0的CGRect // 如果要计算多行的准确高度需要传入 // options:NSStringDrawingUsesLineFragmentOrigin //attribbutes:dict 用于指定字体的相关属性的字典

Android WebRTC 音视频开发总结(五)-- webrtc开发原型

℡╲_俬逩灬. 提交于 2020-02-08 09:32:05
这些天基于WebRTC做了个 手机视频监控 的程序,分享出来,供想了解这方面内容的朋友参考。 这个程序最早是广州一家智能穿戴设备公司请我们做的(他们不需要底层源码,也不需要ios版本),之后我们在这个基础上做了很多的扩充和完善. 目前产品基本功能如下: 1, 支持android,ios,PC之间的相互视频(底层通讯模块都是自己开发的). 2, 服务端既可以支持windows部署,也可以支持linux部署. 3, 支持视频监控,语音和文本沟通. 4, 支持扩展到视频教学,多人广播,秀场等等场景. 5, 如需测试程序和部分源码,请发邮件跟我联系. 这里也有另一份文档的测试说明:http://www.cnblogs.com/lingyunhu/p/rtc23.html 来源: https://www.cnblogs.com/lingyunhu/p/3722029.html

蘑菇街iOS客户端应用源码

限于喜欢 提交于 2020-01-30 17:48:43
蘑菇街iOS客户端应用源码 随着蘑菇街由导购向电商转型,蘑菇街自己的IM也应运而生,IM起初只是用于商家和买家之间沟通的工具。后面我们问自己,既然已经有了用于客服的IM,为什么不自己做一个IM,用于公司内部的沟通工具,来替换RTX呢,然后就有了TT(TeamTalk)的雏形,现在蘑菇街内部的IM工具都是TT来完成的。随着TT的逐渐完善,我们再次决定把TT开源,来回馈 开源社区 ,我们希望国内的中小企业都能用上免费开源的IM内部沟通工具。 ios客户端描述文档 TeamTalk是一套开源的企业办公即时通讯软件,作为整套系统的组成部分之一,IOS客户端为TeamTalk 客户端提供用户登录,消息转发及存储等服务。 目前IOS客户端支持的功能有 消息发送, 图片发送 拍照发送 多点登录功能 群聊功能 结构设计描述 客户端主要依赖三个module,DDMessageModule,DDGroupModule,ContactsModule。 DDMessageModule 主要负责消息的接收和存储功能,聊天界面的消息接收和最近联系人界面的消息接收都是从这个模块来的 DDGroupModule 负责对最近联系群进行管理 ContactsModule 负责对最近联系人进行管理 DDTcpClientManager类负责TCP收发的管理 <ignore_js_op> 详细说明: http://ios

【原】AFNetworking源码阅读(三)

爱⌒轻易说出口 提交于 2020-01-30 09:55:22
【原】AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇 的话,主要是讲了如何通过构建一个request来生成一个data task。但是对于NSURLSession部分却没有提及。主要是精力有限,准备在这一部分把NSURLSession的知识好好梳理一遍。一切先从上一篇中的addDelegateForDataTask:函数说起,然后再介绍AFURLSessionManagerTaskDelegate,最后结合AFURLSessionManager中的NSURLSession梳理一遍(可能会将部分内容放到下一篇)。 2. 由addDelegateForDataTask引发 注意addDelegateForDataTask:这个函数并不是AFURLSessionManagerTaskDelegate的函数,而是AFURLSessionManager的一个函数。这也侧面说明了 AFURLSessionManagerTaskDelegate和NSURLSessionTask的关系是由 AFURLSessionManager管理的 。 该函数除了对于AFURLSessionManagerTaskDelegate类型的成员变量delegate设置之外,最关键的代码就是 [self setDelegate:delegate

源码分析--AFNetworking

不羁的心 提交于 2020-01-30 09:53:36
/*--> */ /*--> */ [AFNetworking] 这个框架是如今 iOS 开发中不可缺少的组件之一。使用也是比较简单的,使用它来发出 HTTP 请求有两个步骤: /*--> */ /*--> */ 1. 以服务器的* 主机地址或者域名 *生成一个 AFHTTPSessionManager 的实例 2. 调用 `- GET:parameters:progress:success:failure:` 方法 AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[[NSURL alloc] initWithString:@"hostname"]]; [manager GET:@"relative_url" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@" ,responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@", error);

【读fastclick源码有感】彻底解决tap“点透”,提升移动端点击响应速度

谁说胖子不能爱 提交于 2019-12-10 15:01:38
申明!!!最后发现判断有误,各位读读就好,正在研究中.....尼玛水太深了 前言 近期使用tap事件为老夫带来了这样那样的问题,其中一个问题是解决了点透还需要将原来一个个click变为tap,这样的话我们就抛弃了ie用户 当然可以做兼容,但是没人想动老代码的,于是今天拿出了fastclick这个东西, 这是最近第四次发文说tap的点透事件,我们一直对解决“点透”的蒙版耿耿于怀,于是今天老大提出了一个库fastclick,最后证明解决了我们的问题 而且click不必替换为tap了,于是我们老大就语重心长的对我说了一句,你们就误我吧,我邮件都发出去了...... 于是我下午就在看fastclick这个库,看看是不是能解决我们的问题,于是我们开始吧 读fastclick源码 尼玛使用太简单了,直接一句: FastClick.attach(document.body); 于是所有的click响应速度直接提升,刚刚的!什么input获取焦点的问题也解决了!!!尼玛如果真的可以的话,原来改页面的同事肯定会啃了我 一步步来,我们跟进去,入口就是attach方法: 1 FastClick.attach = function(layer) { 2 'use strict'; 3 return new FastClick(layer); 4 }; 这个兄弟不过实例化了下代码

140款Android开源优秀项目源码

耗尽温柔 提交于 2019-12-05 23:18:10
BeautifulRefreshLayout-漂亮的美食下拉刷新 https://github.com/android-cjj/BeautifulRefreshLayout/tree/BeautifulRefreshForFood Material Design-动画风格的选项卡tab切换功能 https://github.com/neokree/MaterialTabs TwinklingRefreshLayout-支持下拉刷新和上拉加载的RefreshLayout,自带越界回弹效果 https://github.com/lcodecorex/TwinklingRefreshLayout DialogLoadding-Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解 https://github.com/QQ986945193/DialogLoadding owspace-完整高仿单读的APP,模仿得非常精美,基于MVP+Dagger2+Retrofit2.0+Rxjava https://github.com/babylikebird/owspace GSYVideoPlayer-android视频播放器,支持基本的拖动,声音、亮度调节,支持边播边缓存 https://github.com/CarGuo/GSYVideoPlayer

iOS代码混淆(MJ)

蹲街弑〆低调 提交于 2019-12-05 05:53:00
i OS程序可以通过class-dump、Hopper、IDA等获取类名、方法名、以及分析程序的执行逻辑 如果进行代码混淆,可以加大别人的分析难度 iOS代码混淆方案 源码的混淆 类名 方法名 协议名 …… LLVM中间代码IR的混淆(容易产生bug) 自己编写Pass ollvm: https://github.com/obfuscator-llvm/obfuscator 源码的混淆-通过宏定义混淆方法名、类名 注意点 不能混淆系统方法 不能混淆init开头 的等初始化方法 混淆属性时需要额外注意set方法 如果xib、storyboard中用到了混淆的内容,需要手动修正 可以考虑把需要混淆的符号都加上前缀,跟系统自带的符号进行区分 混淆过多可能会被Appstrore拒绝上架,需要说明用途 建议 给需要混淆的符号加上了一个特定的前缀 ​​​​​​​ 小工具,李明杰的 https://github.com/CoderMJLee/MJCodeObfuscation ios-class-guard 第三方工具 https://github.com/Polidea/ios-class-guard 它是基于class-dump的扩展 用class-dump扫描出可执行文件中的类名,方法名,属性名等并做替换,会更新xib和storyboard名字 用法 brew install ios