
Obective-C
文章平均质量分 92
yahibo
啦啦啦
展开
-
可变数组
数组在编程中使用频率相当高,大量的数据处理中都使用到数组,以下则是一些对数组操作的方法原创 2015-10-27 10:57:34 · 591 阅读 · 2 评论 -
runtime底层实现原理
一、Runtime介绍二、Runtime源码初探三、Runtime消息传递四、Runtime消息转发五、Runtime实际应用###一、Runtime介绍OC是对C语言的扩展,加入了面向对象和消息发送机制,Runtime是OC的一个核心,是用C语言和汇编语言编写。OC是动态运行时语言,在运行时确定一个对象的类型、调用哪个对象的方法,因此需要Runtime来做类和对象的动态创建,消息传递...原创 2019-06-27 11:45:31 · 2538 阅读 · 0 评论 -
Socket
socket又称为套接字,是应用层和传输层中间的软件抽象层,在网络中两个应用通过双向通信连接实现数据交互,向网络中另一个应用发送请求或应答其他网络请求,区别于WebSocket,socket是一组接口,WebSocket是协议。通信及关闭通信过程需要建立三次握手连接和四次挥手协议。三次握手建立连接:第一次握手:客户端向服务端发送一个SYN(同步序列编号)包到服务端,并进入syn_send状态...原创 2019-06-27 11:48:48 · 301 阅读 · 0 评论 -
RSA加密
一、概述二、对称加密三、RSA加密四、OpenSSL使用一、概述RSA是一种非对称加密算法,1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的,因此以三人姓氏的首字母命名了该非对称加密算法,RSA算法。提到非对称加密,下面简单看一下对称加密流程:二、对称加密先举个栗子:1、天王盖地...原创 2019-06-27 11:56:11 · 13283 阅读 · 6 评论 -
GCD部分总结
一、概述多线程任务管理,基于C语言的底层API,采用闭包形式与外界通讯,代码简洁高效;充分利用多核CPU,自动管理线程的生命周期,我们只负责任务的创建。二、队列和任务1、队列常用的数据结构之一,具有先进先出(FIFO)的特性,是一种受限制的线性表,只允许在表头删除任务,在表尾部插入。队列的这种特点生活中很常见,例如学校餐厅排队就餐,银行取号排队办理业务等,先到先得,后来的要在队尾排队。1...原创 2019-07-05 19:16:52 · 471 阅读 · 0 评论 -
objc4-750源码编译
OC的一个主要特性Runtime运行时特性,在日常开发中我们使用到的都是不可见的,还好官方提供了Runtime(objc4)源码供开发者研究,我是小白,下面就开始迈出源码探索的第一步。源码地址:https://opensource.apple.com/tarballs/一、下载objc4-750,编译解决报错问题1、进入源码区,搜索objc4并下载同时下载objc4相关依赖dyld、la...原创 2019-07-01 11:22:57 · 1824 阅读 · 1 评论 -
iOS图片处理
一、图片大小二、强制解压缩三、灰度图片四、图片调色五、设置马赛克一、图片大小位图:由一个个像素点组成的图像图片像素点个数:就是图片宽高乘积一个像素点的大小:4个字节(存放RGBA值,每一分量占1个字节)图片大小:像素点个数乘以4,就是 size = w * h * 4下面打印一下看看图片的大小是否和计算的一致://图片大小-(void)picSize{ _i...原创 2019-07-11 18:13:43 · 367 阅读 · 0 评论 -
简易图片选择器
主要使用PhotoKit框架包含了与photos相关的文件。一下为常用的几个类:1、PHPhotoLibraryphphotolibrary提供对用户照片库中照片、视频和相关内容的元数据和图像数据的访问,包括来自相机卷、iCloud共享、照片流、导入和从iTunes同步的内容。获取当前的访问权限有一下方法:+ (PHAuthorizationStatus)authorizationStat...原创 2019-07-17 11:59:49 · 573 阅读 · 0 评论 -
Runloop
Runloop本质就是一个Event Loop的do while循环,接收->等待->处理。目的:1、保持程序不退出;2、负责监听事件,时钟,网络,触摸等。RunLoop是一个对外的接口在CoreFoundation里边关于RunLoop有5个类:CFRunLoopRefCFRunLoopModeRefCFRunLoopSourceRefCFRunLoopTimerRe...原创 2019-07-17 12:00:38 · 212 阅读 · 0 评论 -
runtime消息发送机制-动态添加方法
#一、消息发送机制主要使用objc_msgSend()函数:objc_msgSend(id _Nullable self, SEL _Nonnull op, …)第一个参数self:某一个对象或者某个类(类也是一个对象一个指针);第二个参数sel:函数指针指向第一个参数(对象或类)对应的函数;第三个及往后的参数:第二个参数(函数)对应的参数值。主要使用函数:1、通过字符串获取一...原创 2019-06-27 11:43:51 · 180 阅读 · 0 评论 -
KVC/KVO实现原理
#一、kvo实现原理一个对象的属性被观察时系统动态创建了一个子类,并且改变了原有对象的isa指针指向,指向动态创建的子类,子类中重写了被观察属性的set方法,在使用点方法和set方法给属性赋值时,最终调用的是子类中的set方法。注意:查看isa指针指向,如果断点执行过程中isa指针没有变化, 需要关闭xcode重新打开相关代码:在addObserver处设置断点观察对象isa指针变化:- ...原创 2019-06-27 11:42:12 · 861 阅读 · 1 评论 -
文件操作
文件操作中包括有创建文件,创建目录,写文件,读文件,复制文件,删除文件等内容实验中我们需使用命令窗口帮助我们实现文件操作中的各个功能,希望对大家有帮助命令窗口ls 显示当前位置的所有文档pwd 显示当前位置的文件位置touch+test.txt 创建一个文件cat test.txt 获取该文件中的ls - al 打印所有根目原创 2015-11-07 11:13:09 · 316 阅读 · 0 评论 -
NSDate/NSData
NSDate/NSData中常用的方法 NSString *str = @"1234abcd"; NSData*data = [str dataUsingEncoding:NSUTF8StringEncoding];//将字符转换成dataNSUTF8StringEncoding为编码格式 NSString*st原创 2015-11-08 14:29:13 · 365 阅读 · 0 评论 -
代码块
下边是代码块的定义及使用方法//block作为函数的参数//函数返回值类型 函数名(block的声明格式)int fun(int (^block)(int a,int b))//回调{ return block(1,2);} //block声明格式:返回值类型(^block名字)(形参列表)原创 2015-11-08 14:33:16 · 258 阅读 · 0 评论 -
字符串
字符串创建 //1.快捷创建 NSString *number0 = @"1";//NSString *str1 = [[NSString alloc] initWithString:@"dfas"]; //2.alloc创建方法 NSNumber*number1 = [[NSNumbera原创 2015-10-25 16:04:42 · 386 阅读 · 2 评论 -
iOS应用砸壳
#一、砸壳概述及其原理APP上架会经历 APP->AppStore->源码 加密过程。应用加密:开发者向AppStore提交应用,都将由苹果官方进行加密处理,以确保用户使用的APP都是经过审核过的,加密后的APP,开发人员无法通过Hopper等反编译应用,也无法使用class-dump。iOS应用运行原理:应用在磁盘中是加密状态,由于CPU运行不会识别加密文件,因此在启动应用前需...原创 2019-05-28 17:15:02 · 16665 阅读 · 0 评论 -
获取苹果设备的UDID
苹果开发中,经常会添加测试设备UDID,通常在fir、蒲公英等平台获取,除了这些平台我们自己也可以实现UDID的获取,下面就通过已有苹果开发证书和模板来获取苹果设备的UDID。1、准备描述文件模板,并设置模板信息。描述文件模板如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple/...原创 2019-06-26 16:09:09 · 4966 阅读 · 0 评论 -
TableViewDataSource拆分
在项目中tableview列表经常使用到,所以在创建视图时,我们会在每个使用到tableview的页面创建tableview并且实现代理方法,代理方法包括组数,行数,cell返回,行高、头视图等。方法很多,每次都要重写这些代理方法,因此我们需要分离视图和这些代理方法,让代理方法成为公用部分。实现过程1、创建TableViewDataSource类继承自NSObject遵循UITableVie...原创 2019-06-26 16:29:04 · 185 阅读 · 0 评论 -
block
###一、概述block又称为闭包,一个能够访问局部变量的函数。闭包=一个函数(或指向函数的指针)+该函数执行的外部上下文变量(自由变量)block:1、可嵌套定义;2、可定义在方法的内部或外部;3、本质是对象,使代码高内聚。使用clang命令将OC代码转换为C++文件。命令如下:clang -rewrite-objc main.m在同级目录下生产了一个同名的.cpp文件,打...原创 2019-06-26 16:31:23 · 277 阅读 · 0 评论 -
Category-初探
参考:objc4-750源码编译什么是Category?分类是Objective-C 2.0之后新加的语言特性,一个特殊类,主要有一下作用:在不改变原有类的前提下为已存在的类扩展新方法拆分类文件做功能分类,便于管理引用即用有多继承的效果分类不能添加成员变量,可以添加属性,但是系统不会生成属性对应的getter、setter方法,因此属性是无效的,需要我们手动添加getter、se...原创 2019-09-09 15:54:06 · 762 阅读 · 0 评论