
iOS开发
文章平均质量分 53
old__donkey
热情,乐观,开朗
展开
-
工厂设计模式
工厂设计模式的特点是创建和管理同一类协议族的功能类。在实际项目中可以应用于登陆,验证等业务模块。比如登陆模块,登陆方式有密码登陆,短信登陆,人脸/指纹登录,手势登录,声纹登录,OCR生物识别登录等等。若要是写在业务层,随便一点小改动都改的要死,就算写成工具也会在业务层写上一堆的逻辑判断+登录方式的初始化及其逻辑调用,可以说不易拓展,切维护成本高,代码量也极大。这个时候工厂模式就体现出了其价值,其一,通过工厂来创建管理其登录方式,每种登陆方式的具体实现,完全写在其对应协议的实现类中,只要你的协原创 2021-01-25 16:52:23 · 240 阅读 · 0 评论 -
iOS 多线程 NSOperation
iOS开发当中,并发处理可能大家已经用惯了GCD的方式,今天我想聊一下NSOperation,因为相对来说,对于队列的操作相对灵活一些,但对于一般的业务发开来说,两种方式都差不多。但我还是更倾向于NSOperation的依赖操作。 比如说在上传多张照片的时候,我们用多线程技术进行处理,可能常用手段就是线程组加信号量,但我觉得还是通过NSOperation的依赖相对简单些,可读性也更好一些。第一步:创建操作任务第二步:添加依赖第三步:将操作添加到队列中执行...原创 2020-12-28 17:28:13 · 166 阅读 · 0 评论 -
tableView性能优化及加载大量高清图片优化内存
tableview是iOS客户端常用控件,对于电商类及新闻展示类的app来说,提高页面流畅度是很有必要的。那么我今天就来提个方案具体思路就是判断内存中是否已经有图片,有就从内存中取,没有就下载,这样可以降低用户流量量费判断当前tableview的滑动状态和滑动动画如果tableview处于滑动状态和有滑动动画状态就不进行下载图片,显示占位图片,当不在处于滑动再下载图片,这样就可以让界面更流畅,也可...原创 2018-06-30 11:11:21 · 3082 阅读 · 0 评论 -
C 语言对于存储区域及指针的概念总结
存储区域: 全局变量分配在静态去,局部变量和形参存放在栈区,手动管理内存的在堆区,常量存放在常量区。指针及指针变量: 一块存储单元对应的一个地址,指针就是地址,这个地址指向这个存储单元,存放存储单元的地址或指针的变量叫做指针变量,指针变量的值,就是这个地址或指针,指针变量可以为空,指针变量相减可去获取对应的存储单元长度,相加则无意义。原创 2017-11-23 10:06:37 · 833 阅读 · 0 评论 -
环信 单聊 群聊集成
闲着没事,用了两天的时间集成了一下环信,git 地址:https://gitee.com/zhangxiny/HuanXin.git环信 API 总体来说写的很清晰,集成中遇到的坑就是在添加群成员后,通过获取群所有成员的 api,只有群主的是获取全部成员,其他成员通过这个 api 是获取不到自己的最后我连着调用两次才可以都获取到, EMError *error = ni原创 2017-11-16 11:25:54 · 1675 阅读 · 0 评论 -
GCD的基础概念
前些天因为一个并发线程的的bug和同事讨论了下GCD,发现他们都会用,但是说到具体原理和细节,发现他们并不清楚,所以普及一下基础概念。我们先要了解两个东西,一个是队列,一个是线程池dispatch_async(, )异步 dispatch_sync(, )同步第一个参数 就是要从线程池取出的线程第二个参数原创 2017-11-05 14:12:15 · 262 阅读 · 0 评论 -
进程,主线程,异步线程,多线程和runloop的作用和关系
用一个形象的比喻来形容进程,主线程,异步线程,多线程和runloop的作用和关系一个人吃饭的业务场景:(就是相当于一个进程)角色1:嘴 (第1个黑色箭头,代表主线程)角色2:左手拿勺子(第2个黑色箭头,代表子线程1)角色3:右手拿筷子(第3个黑色箭头,代表子线程2)角色4:锅包肉,地三鲜,鱼香肉丝,西红柿鸡蛋汤,米饭 (各种任务);请开始你的表演: 现在开始吃饭,嘴原创 2017-11-04 15:56:10 · 720 阅读 · 1 评论 -
runtime 创建动态类及常用方法的介绍
今天简单的介绍下 runtime创建动态类及常用方法的介绍开辟一个类的内存空间 Class myClass =objc_allocateClassPair([selfclass], newName.UTF8String,0);第一个参数:继承于哪个父类第二个参数:类的名字注册这个类objc_registerClassPair(myClass);给这个原创 2017-10-30 09:35:23 · 295 阅读 · 0 评论 -
runtime 方法交换
Method class_getClassMethod(Class cls, SEL name);第一个参数:获取该方法的类第二个参数:方法声明返回值:method实例Method method1 = class_getClassMethod([MyViewController class],@selector(run));原创 2017-10-29 22:06:24 · 273 阅读 · 0 评论 -
runtime 创建数据模型
objc_property_t * class_copyPropertyList(Class cls, unsigned int *outCount);//苹果文档获取类所有属性的接口Class cls //要获取属性的类unsigned int *outCount //一个指向该属性数组的一个计数指针objc_property_t* //返回一个属性指针数组具体实现#import原创 2017-10-29 21:15:26 · 382 阅读 · 0 评论 -
工厂模式和策略模式的区别
工厂设计模式,用于创建复杂对象,管理多个不同功能接口 ,策略模式只是将同一功能的不同实现抽离出来,不需要管理对象@protocol xxx NSObject>-(idMap>)getMap;mapview功能-(idLocation>)getLocation;定位功能@end//实现工厂协议获取对应的对象-(idMap>)getMap原创 2017-10-20 22:10:18 · 231 阅读 · 0 评论 -
iOS 推送服务
今天想梳理一下APNS,理解原理的人,看苹果推送api觉得十分清晰,可是不理解的人看api基本没什么卵用,那么我写一下原理,然后你们在去对这苹果api 捋顺一下。 远程推送是由客户端服务器和苹果服务器来完成的,跟客户端没有什么太多的关系。因为当用户的苹果设备开通连网的时候,就已经与苹果的服务器进行了长链接,这就已经完成一半了,当我们想给客户推送信息,就用我们的服务器给苹果服务器推送消息原创 2017-02-05 15:20:55 · 284 阅读 · 0 评论 -
iOS 真机证书描述文件配置逻辑
今天同事的真机不能测试了,一通搞,搞了好久也没搞好,交流的时候我发现他的逻辑就是混乱的,我分分钟就帮他弄好了,只要你的逻辑清晰,这个很简单的。 下面我来说一下,首先你需要去生成一张证书,按照步骤来,我发现大家不清晰的一点就是导入csr文件,这个文件是从你本地钥匙串获取的,是你这台电脑的一个证明书,然后在去为你的项目注册一个app ID,也是按照步骤来,在给你的测试设备的udid编号原创 2017-02-05 15:14:29 · 480 阅读 · 0 评论 -
多线程实现重获短信验证码功能
#import "ViewController.h"@interface ViewController ()@property(nonatomic,strong)dispatch_source_t timer_t;@property (strong,nonatomic) IBOutletUIButton *messageCode;原创 2016-11-23 22:09:56 · 902 阅读 · 0 评论 -
iOS环信集成心得
最近闲着没事,集成了环信的SDK,越来越多的app都倾向于用户的交互了,所以即时通讯也被应用的越来越广泛,其实有第三方,客户端还是挺轻松的. 首先对于新手来说,一定要先去看环信API的服务器集成文档,去了解一下数据存储的逻辑,要不然会有很多转不过弯的问题 然后我就直接上关键代码-(NSMutableArray *)datasources{ if (!_da原创 2016-11-23 21:54:56 · 1263 阅读 · 0 评论 -
使用AFNetworking上传相册或拍照的图片
前几天写了一下NSURLSession下载,今天就写一个上传吧#import "ViewController.h"#import "AFNetworking.h"@interface ViewController ()UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControlle原创 2016-02-21 23:13:07 · 563 阅读 · 0 评论