自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 3-runtime 之 Tagged Pointer

Tagged Pointer 是自从iPhone 5s 之后引入的特性1 先说一下iOS的内存布局代码区:存放编译之后的代码数据段 :字符串常量 : NSString *hello = @“hello”;已经初始化和未初始化的全局变量,静态变量堆:通过alloc,malloc,calloc 动态分配的内存空间栈 :函数调用开销,局部变量 // 静态变量 static...

2019-07-22 11:58:33 138

原创 iOS AES加密

AES 美国国家安全局采用的加密方法,MAC 系统自带的钥匙串也是采用的AES 加密方法有两种模式CBC 模式 链式加密 ,密码块链,使用一个秘钥和一个初始化向量,对数据执行加密。ECB 电子密码本方法加密,数据拆分成块,独立加密。mac 系统已经集成openssl 工具,可以直接文本进行加密1 打开终端 桌面新建一个文件夹,cd 到里面,touch一个abc.txt2 openssl...

2019-07-19 17:24:18 1832

原创 iOS8.0 之后指纹解锁

iOS 8.0 SDK 开放了调用指纹识别的API,但是仅限于支持5s 以后的机型使用的话,很简单,要导入系统的库#import <LocalAuthentication/LocalAuthentication.h>#import "ViewController.h"#import <LocalAuthentication/LocalAuthentication.h&gt...

2019-07-19 17:20:02 164

原创 iOS 使用钥匙串将用户密码存入本地

在 iOS 开发中,用户一般注册时候,APP会将用户的用户名和密码直接保存到本地,便于用户下次直接进行登录。这样就会牵扯到一个问题,用户的密码不能以明文的形式存储在本地,使用钥匙串进行保存用户的密码较为安全。钥匙串的使用,需要使用第三方的框架, SSKeychain#import "ViewController.h"#import "SSKeychain.h"#define kBundl...

2019-07-19 17:18:42 837

原创 iOS base64 MD5

网络APP 只要涉及用户隐私的数据,均不能以明文传输。一 base64 编码将任意的二进制数据转为编码为 65个字符的组成。0-9 a-z A-Z + / = 一共 65 个 字符例如:1 mac 自带 base64命令可以将base64 编码的文件可以转换–》将桌面上1.png 图片经过base64编码生成一个abc.text,base64 1.png -o abc.te...

2019-07-19 17:09:01 355

原创 2-Runtime objc_object objc_class

一 NSObjectNSObject是OC 中的基类,除了NSProxy其他都继承自NSObject@interface NSObject <NSObject> {#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wobjc-interface-ivars" Class isa OBJC_...

2019-07-19 11:59:32 256

原创 1-runtime的Method,IMP,Property,ivar

基础定义objc-750 的tar包objc-private.h 定义typedef struct objc_class *Class;typedef struct objc_object *id;#if __OBJC2__typedef struct method_t *Method;typedef struct ivar_t *Ivar;typedef struct cat...

2019-07-18 15:32:16 186

原创 Block 底层值__Block修饰符

__Block 修饰符Block 想要改变外部的变量,必须要用__Block 来修饰自动变量。根据内存地址可以看出来,__block 所修饰的变量,将外部的变量在栈中的内存地址放到了堆中。 // auto 自动变量的内存分配在栈区域 stack __block int meters = 1000; // 在block 引用之前 0x7ffeefb...

2019-07-17 12:04:21 171

原创 Block 底层1

Block本质来讲是OC 对象,其内部有一个isa指针。1 Block 的声明一言以蔽之: returnType ( ^blockName)(parameterTypes) = ^returnType (parameters) {};returnType 返回的类型 可以为Void,为Void的时候可以省略^blockName Block的名字parameterTypes...

2019-07-16 18:44:05 136

原创 iOS KVO 的实现原理

KVO 的实现原理一 原理1.KVO是基于runtime机制实现的2.当某个类的属性对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter 方法。派生类在被重写的setter方法内实现真正的通知机制3.如果原类为Dog,那么生成的派生类名为NSKVONotifying_Dog4.每个类对象中都有一个isa指针指向当前类,当一个...

2019-07-16 11:07:00 319

原创 OC的分类

OC的分类1 OC 分类作用生命私有的方法分解体积庞大的类文件把Framework的私有方法公开2 分类的特点运行时决议可以为系统添加分类3 分类可以添加哪些内容实例方法类方法协议属性分类会被编译成一个结构体struct category_t { const char *name; ...

2019-07-13 11:18:07 542

原创 OC的对象的分类

OC的对象分类一 oc的对象分类主要分为3种1 instance 对象:实例对象就是通过alloc 出来的对象,一个类每一次的alloc都会产生一个新的实例对象 StudentA *a = [[StudentA alloc]init]; StudentA *b = [[StudentA alloc]init]; // 打印结果如下 地址是明显不同的 ...

2019-07-11 10:42:25 196

原创 iOS NSObject对象内存大小

NSObject内存大小类的本质是结构体 无须赘述struct NSObject {Class isa; };一个类对象的实例大小是8个字节之所以打印出的16个字节,是因为一个NSObject 最小开辟16个字节 NSObject *obj = [[NSObject alloc]init]; // class_getInstanceSize 这是runtime 获...

2019-07-10 18:11:45 1044

原创 siwft 写时复制 Copy-On-Write

写时复制 Copy-On-Write1 定义在siwft 标准库中,Array,Dictionary,Set这样的集合类型是通过写时复制来实现的。import Foundationvar a1 = [1,2,3];var a2 = a1;// 将a1 复制给 a2,地址打印结果是相同的// 0x1--0x2--0x3print(String(format: "%p--%p--...

2019-07-10 09:58:39 303

原创 swift Sequence 和 SubSequence

1 序列 Sequence序列协议是集合类型结构中的基础。一个序列是代表有一系列具有相同类型的值,并且对这些值进行迭代。协议中主要有两个参数,一个是元素Element,一个就是迭代器Iterator /// A type representing the sequence's elements. associatedtype Element where Self.Elemen...

2019-07-09 11:31:24 1025

原创 swift可选类型

import UIKit// Press ⌘1 (Or use View -> Navigators menu) to open Project Navigation to choose the file.var array1 = ["1","2","3","4","5"];// 1 if let 是一个组合关键字 来进行可选绑定// 解决Optional对象解包时产生空...

2019-07-08 11:08:41 278

原创 swift 数组 filter reduce sort 等方法

数组的常用方法swift 数组有很多的操作方法,但是用的时候用常常想不起来,就列出来看看map 和 flatMap对数组中的元素进行变形操作filter主要对数组进行过滤reduce主要对数组进行计算sort对数组进行排序forEach循环遍历每一个元素min 和 max找出数组中最大元素和最小的元素drop丢弃元素conta...

2019-07-05 14:37:04 953

原创 swift 浮点型字符串的运算

// 1 两个浮点字符串之间的运算let str1 = "1.3";let str2 = "2.4";let val1 = Double(str1);let val2 = Double(str2);let val3 = CGFloat(Double(str1)!) * CGFloat(Double(str2)!);print(val3);// 2 string 转 ...

2019-07-04 22:14:04 1583

原创 OC协议实现多继承

协议实现多继承协议实现多继承的话,只是简答的提供了接口,并灭有提供实现的方式。A#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@protocol StuAProtocal <NSObject>// 学生A 会游泳- (void)swimming;@end@interface S...

2019-07-03 11:31:39 630

原创 OC 消息转发实现多继承

消息转发实现多继承在OC 中,一个类只支持单继承,但是可以通过别的手段实现多继承。利用消息转发实现多继承。在OC 中,对象调用方法实际是在发消息,对象接收到一条消息的时候,消息函数随着对象的isa 指针到自己的方法列表中去寻找对应的方法,如果本类找不到,去父类中寻找,父类中找不到,继续沿着继承关系向上寻找,一直寻找到NSObject类别。如果到跟类没有找到,进行消息转发。一下是实现步骤创...

2019-07-03 11:09:44 353

原创 OC 的反射机制以及使用场景

OC 的反射机制一 定义概念普遍的概念就是类似于java的反射机制,动态机制使得OC语言更加灵活。反射机制就是可以根据指定的类名获取类的相关信息。二 作用1 根据类名获得class// 选择器 和字符串之间的相互转化FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);FOUNDATION_EXPORT S...

2019-07-03 10:31:38 1169

原创 swif 在字符串中查找特定字符索引以及改变字符串的指定位置的颜色 字体大小

1 第一种方式 var text = "谁包含这个字母"; let range:Range<String.Index> = text.range(of: "含")!; let end_idx:Int = text.distance(from: text.start...

2019-07-02 10:32:21 1123 2

原创 iOS 中 load 和 initialize的实现顺序

1 load 函数调用时机,当类引用进项目的时候执行load函数,在main函数开始之前,与这个类是否被用到是无关的,每个类的load函数都会自动调用一次。1 父类和子类都实现load函数的时候,父类的load方法优先于子类2 类中的load方法执行顺序优先于类别(Category)3 当有多个类别(Category)实现load方法时候。会按照顺序执行4 子类load...

2019-07-01 11:07:09 540

JSONExport.zip

json 一键转换 模型,发现JSONExport还是不错的,在此分享一下:JSONExport ,

2020-04-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除