自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 Runtime源码解析-类

Runtime源码解析-类

2022-12-08 01:00:00 350

原创 Runtime源码解析-类中bits

Runtime源码解析-类中bits

2022-12-08 01:00:00 428 1

原创 Runtime源码剖析-对象

Runtime源码剖析-对象

2022-12-07 20:37:08 632

原创 Runtime源码解析-alloc

Runtime源码解析-alloc

2022-12-07 20:36:10 1212

原创 什么是内存对齐

内存对齐

2022-12-07 20:35:44 1180

原创 联合体与位域

联合体与位域

2022-12-07 20:35:08 599

原创 iOS中malloc和calloc源码分析

iOS中malloc和calloc源码分析2. _malloc_zone_calloc该方法中最终返回结果是一个指针,所以最重要的是13行。它创建了一块内存,并让指向它。这个时候,我们点击跳转对应的实现,发现点不进去。这个时候才用汇编方式,看到该方法最终跳转至方法

2022-12-07 20:33:32 563

原创 Runtime源码剖析---图解引用计数与weak

文章目录Runtime源码剖析---图解引用计数与weak前言什么是引用计数?什么是循环引用?引用计数引用计数的存储isa指针中的引用计数Side Table里的引用计数引用计数的管理管理引用计数的方法获取引用计数非ARC环境下ARC环境下retain的实现release的实现dealloc的实现weakSideTablesSideTablespinlock_t:自旋锁RefcountMap:存放...

2019-10-10 19:41:10 378

原创 Runtime源码剖析---图解Category

文章目录Runtime源码剖析---图解Category什么是Category?extensioncategory 与 extension 的区别Category的实质category_t 结构体分类如何存储在类对象中category运行期分类在运行期做了什么运行流程load与initialize的区别loadinitialize关联对象如何关联对象关联对象的实现原理Runtime源码剖析—图解...

2019-10-09 01:14:01 288

原创 《计算机网络-谢希仁》读书笔记---物理层

文章目录《计算机网络-谢希仁》读书笔记---物理层物理层基本概念数据通信的基础知识1.数据通信系统的模型2.有关信道的基本概念信号和基带信号调制3.信道的极限容量物理层下面的传输媒体1.导引型传输媒体1.双绞线2.同轴电缆3.光缆2.非导引型传输媒体信道复用技术1.频分复用、时分复用和统计时分复用频分复用(FDM)时分复用(TDM)统计时分复用(STDM)2.波分复用(WDM)3.码分复用(CDM...

2019-10-05 12:46:51 413

原创 《计算机网络-谢希仁》读书笔记---概述

《计算机网络-谢希仁》读书笔记—概述互联网概述1.网络和互连网2.互联网基础结构的三个发展阶段互联网的组成边缘部分1.客户-服务器方式2.对等连接方式核心部分1.电路交换的主要特点2.分组交换的主要特点计算机网络类别1.按照网络的作用范围进行分类2.按照网络的使用者进行分类3.用来把用户接入到互联网的网络计算机性能计算机网络体系结构...

2019-10-02 20:55:57 906

原创 Linux目录配置

文章目录Linux目录配置目录配置依据FHS定义的三层目录/(根目录):与开机有系统有关必须要存在的目录建议可以存在的目录/usr:与软件安装/执行有关必须存在的目录建议存在的目录/var:与系统运作过程有关必须存在的目录目录树Linux目录配置目录配置依据利用Linux来开发的产品实在太多了,为了更好的管理,后来就有所谓的 Filesystem Hierarchy Standard(FH...

2019-10-02 20:55:16 175

原创 iOS开发---Block详解

文章目录iOS开发---Block详解Block的基础什么是Blocks?Blocks的语法Block类型变量Block在oc中的使用Block截取变量截获自动变量的值通过__block说明符赋值Block的实现Block的实质是什么?准备工作Block源码预览Block结构体`struct __block_impl` 结构`static struct __main_block_desc_0`结构...

2019-09-26 21:30:31 664

原创 RunLoop源码剖析---图解RunLoop

文章目录RunLoop源码剖析---图解RunLoop前言什么是RunLoop?RunLoop的作用RunLoop在何处开启?RunLoop对象RunLoop对象的获取CFRunLoopRef对象源码剖析RunLoop和线程RunLoop的相关类RunLoop的相关类之间关系各个类的作用RunLoop中的ModeCFRunLoopModeRef__CFRunLoopMode源码剖析__CFRunL...

2019-09-07 22:15:01 441

原创 Runtime源码剖析---图解消息发送机制

文章目录Runtime源码剖析---图解消息发送机制前言预备知识选择子SELobjc_msgSend()的执行流程消息发送阶段动态解析阶段动态解析流程动态解析例子消息转发阶段消息转发流程消息转发例子Runtime源码剖析—图解消息发送机制源码面前,了无秘密前言预备知识在阅读这篇文章之前,你需要了解一些基础知识:在 Objective-C中的“方法调用”其实应该叫做消息传递...

2019-08-24 20:14:38 220

原创 Runtime源码剖析---图解对象、类与isa

文章目录iOS开发---图解对象、类与isa对象objc_object定义如何在源码中找到它?isa_t类objc_class定义成员变量继承关系元类isa_t结构剖析结构分析cls对象bits对象structisa_t初始化过程`indexed` 和 `magic``has_cxx_dtor``shiftcls`其他位域isa的应用获取cls地址class方法isMemberOfClass&am...

2019-08-21 23:01:12 251

原创 iOS开发---属性关键字详解

文章目录iOS开发—属性关键字详解@Property什么是属性?Property的默认设置关键字详解copyatomic与nonatomicreadwrite与readonly比较strong与copy比较assign、weak、unsafe_unretain@synthesize 和 @dynamiciOS开发—属性关键字详解@Property什么是属性?属性(property)是Ob...

2019-08-20 17:48:35 230

原创 iOS开发---内存管理与引用计数

文章目录概要内存管理的思考方式思考方式对象操作与OC中方法的对应自己生成的对象,并自己持有allocnewcopy与mutableCopy不再需要自己持有的对象时释放release无法释放非自己持有的对象alloc/retain/release/dealloc底层实现GNU源码allocretainreleasedealloc苹果实现autorelease什么是autoreleaseGNU源码苹果...

2019-08-18 16:48:26 299

原创 iOS开发---ARC

文章目录什么是ARC?概述所有权修饰符__strong修饰符ARC下自己生成并持有对象的源代码ARC下非自己生成并持有的对象__strong修饰符的变量之间相互赋值__weak修饰符循环引用__weak__unsafe_unretained修饰符__autoreleasing修饰符ARC有效修饰符和ARC无效方法比较非显示使用__autoreleasing修饰符通过方法名使用访问附有__weak修...

2019-08-18 16:47:57 252

原创 iOS开发---图解事件的产生和响应

文章目录iOS开发---图解事件的产生和响应事件的产生什么是事件(UIEvent)?事件的产生事件的传递如何寻找最合适的UIViewUIView接收触摸事件的条件事件传递的流程事件传递的底层实现hitTest:withEvent:方法pointInside:withEvent:方法事件的响应UITouch对象响应者对象事件的响应流程响应者链事件的整个流程总结hitTest:和pointInside...

2019-08-18 15:25:51 306

原创 iOS开发---图解代理

文章目录iOS开发---图解代理什么是代理?代理的组成协议协议的作用和内容协议定义地点协议的继承协议的修饰符如何定义协议代理对象如何实现代理对象委托者如何定义委托者代理对象和委托者对应关系代理实现原理实现流程内存管理为什么我们设置代理属性都使用weak呢?弱引用有weak和assign两种方式,用哪一种好?代理给ViewController瘦身iOS开发—图解代理什么是代理?代理的组成...

2019-08-08 20:08:33 322

原创 iOS开发---单例详解

Table of ContentsiOS开发—单例详解什么是单例模式?单例使用场合单例优缺点* 优点* 缺点单例的实现方式单例中懒汉式实现方式加锁GCD单例中饿汉式实现方式MRC下单例实现方式封装单例模式iOS开发—单例详解什么是单例模式?单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点...

2019-08-08 12:43:32 275

原创 iOS开发---图解KVO

Table of ContentsTable of ContentsiOS开发—图解KVO什么是KVO?KVO基本使用注册观察者监听回调调用方式自动调用手动调用移除观察者Crash观察者未实现监听方法未及时移除观察者多次移除观察者实际应用KVO实现原理测试代码发现中间对象NSKVONotifying_Person类内部实现sette...

2019-08-08 12:42:34 306

原创 iOS开发---图解KVC

Table of ContentsiOS开发—详解KVC什么是KVC?KVC方法全览KVC基础操作KVC取值取值方法基于getter取值底层实现KVC设值赋值方法基于setter赋值底层实现KVC批量操作KVC集合属性操作集合操作符数组操作符嵌套操作符KVC与容器类KVC与有序容器(NSMutableArray)取值方法NSM...

2019-08-08 12:41:24 252

原创 将.mlmodel导入到项目中会用到的方法

将UIImage转换成CVPixelBufferRef/// 下面这个属性是UIImage的,你只要UIImage的对象 image.CGImage传进来就行了/// @property(nullable, nonatomic,readonly) CGImageRef CGImage; - (CVPixelBufferRef)GetpixelBufferWithCGImage:(CGI...

2019-06-04 20:50:27 633

原创 父子进程共享文件资源原理

进程打开的文件资源如何通过代码实现访问fork前打开的文件描述符//文件描述符int fd = open();pid_t n = fork();if (n == 0) { //能不能通过fd访问打开的文件 int num = write (fd, "hello", 5); if (num == -1) { printf("write error...

2019-05-30 23:38:01 367

原创 手把手教你如何快速解析.mlmodel文件

把训练好的模型拖入工程把.mlmodel文件拖入到 iOS程序后,点击.mlmodel文件他会显示这个界面Model Class这个是 Xcode 根据模型编译生成的接口类,应用程序需要 #import “imageClassifier.h”。点最右边那个箭头,就会打开这个头文件。Model Evaluation Parameters描述输入和输出,CoreML 接的机器学习...

2019-05-27 21:33:54 3287 1

原创 进程管理命令&系统基础

进程管理命令进程的概念对于用户而言,执行的是任务(应用程序),对于操作系统而言,系统中运行的程序,是一个动态执行的过程程序:存储在磁盘上的二进制文件如何启动进程:路径/可执行文件名 ./main路径/可执行文件名 & ./main & 后台执行如何查看系统运行的进程:ps 仅显示与当前终端有关的进程ps -e 显示系统上所有的进程...

2019-05-19 00:05:49 138

原创 Linux的文件存储组织结构

Linux的文件存储组织结构Linux和Windows存储区别windows:C盘 D盘 E盘Linux:倒状树存储数据的设备磁盘内存条缓存寄存器每个类型文件作用/bin 系统命令对应的可执行文件/etc 系统的配置目录 配置文件/mnt 临时挂载点/dev 设备目录/proc 虚拟目录 以进程为到位存储内存数据的映射/usr u...

2019-05-18 23:28:39 604

原创 可变字符串

#import <Foundation/Foundation.h>//NSString 创建不可变字符串对象//字符串对象本身不可以被修改//NSMutableString是NSString的子类//创建可变字符串对象//字符串对象本身可以被修改//可变字符串对象可以直接调用不可变字符串的方法int main(int argc, co...

2018-06-10 23:41:42 196

原创 字符串的操作

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { //1、字符串的比较函数 NSString *str1 = [NSString stringWithFormat:@"%@",@"hello w...

2018-06-10 23:40:55 111

原创 字符串创建

#import <Foundation/Foundation.h>//c语言字符串//helloworld//1、c语言字符串必须是双引号包含//2、c语言字符串中的每个字符占用一个字节空间//3、c语言字符串的末尾有一个隐藏的\0字符//4、打印c语言的字符还用%s占位符,传递字符串的首地址//OC中的字符串对象//NSString...

2018-06-10 23:39:45 1169

原创 继承及实例变量的作用域

#import "Person.h"@interface Student : Person{ NSInteger _num;//学号 NSInteger _scoar;//分数}@property (nonatomic, assign)NSInteger num;@property (nonatomic, assign)NSInteger sco...

2018-06-10 23:38:10 360

原创 数组的创建及操作

#import <Foundation/Foundation.h>//NSArry 创建不可变数组对象//数组就是对象的有序集合//数组存储的是对象的地址(对象的引用)//不可变数组一旦被创建,不可以继续添加、删除或者修改//数组中元素可以为不同类型对象//数组的访问通过数组的下标访问,下标从0开始int main(int argc, const ch...

2018-06-10 23:35:42 298

原创 OC分数的实现

#import <Foundation/Foundation.h>@interface Fraction : NSObject{ NSInteger _numerator;//分数的分子 NSInteger _denominator;//分数的分母}//构造方法的设计- (id)initWithNumerator:(NSInte...

2018-06-03 19:06:01 401

原创 OC构造方法与类方法

#import <Foundation/Foundation.h>@interface Book : NSObject{ NSString *_name; float _price;}//构造方法也叫初始化方法:初始化alloc创建的对象,把对象清0,给对象的实例变量赋值;//带参数的构造方法必须以 initWithXXX 开头...

2018-06-03 19:04:43 349

原创 OC分文件创建类

#import <Foundation/Foundation.h>//声明一个类@interface Person : NSObject{ NSString *_name; NSInteger _age;}//init方法- (id)init;//setter方法- (void)setName:(NSStrin...

2018-06-03 18:59:51 430

空空如也

空空如也

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

TA关注的人

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