sunzhongliang

好心态才有好状态

load方法和initialize方法的区别

load方法 我们创建两个类,分别是Person类和Student类,Student类继承Person类, 然后再分别创建Person和Student的category类。 分类里面有没有load方法? 在Student类或者Person类中添加load方法,是可以执行的,证明分类当中可以有load方法 load方法什么时候调用? load方法会在runtime加载类、分类时自动调...

Category

category category的本质 category是通过运行时机制,通过Runtime动态将分类的方法合并到类对象、元类对象中 新建一个category,通过 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc Person+test.m 指令将文件转为C++源码 可以看到cpp文件里面有这么一个结构体: struct _ca...

iOS中的block

block block 其实封装了函数调用以及函数调用环境的OC对象,也是一个OC对象,它内部也有个isa指针 int age = 20; void (^block)(int, int) = ^(int a , int b){ NSLog(@"this is a block! -- %d", age); NSLog(@"this is a block!"); ...

iOS中的autorelease和autoreleasepool

autorelease 在MRC时代,我们如果希望一个对象延迟释放的时候,通常会把这个对象标记为autorelease, 如 NSString *str = [[[NSString alloc] initWithString:@"hello"] autorelease]; 后来在ARC的时候,我们甚至不用关心一个对象是什么时候release的, 系统总是能够在合适的时候帮我们去释放这个对象...

iOS中的Runtime

Runtime Objective-C是一门动态性比较强的编程语言,跟C、C++等语言有着很大的不同,程序在运行的过程中,开发者可以通过Runtime创建类、方法以及属性等等,这些动态性是由Runtime API来支撑,Runtime API提供的接口基本都是C语言的,源码由C\C++\汇编语言编写 共用体 在讲Runtime之前就需要了解一下isa, 而isa中又用到共用体(unio...

iOS中的RunLoop

什么是RunLoop RunLoop,字面理解意思是运行循环,在程序运行的时候循环做一些事情;在程序当中主要应用于定时器、PerformSelector、GCD Async Main Queue 、事件响应、界面刷新、AutoreleasePool等等 在iOS当中有两套API用来使用RunLoop Foundation框架中的NSRunLoop CoreFoundation框架...

位运算在项目中的应用

前言 经常看到苹果代码在传值时,使用按位或(|)来传值多个参数值 比如: self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | ...

iOS中的多线程

术语:同步、异步、并发、串行 同步和异步的主要区别:能不能开启新的线程 同步:在当前线程中执行任务,不具备开启新线程的能力 异步:在新的线程中执行任务,具备开启新线程的能力 并发和串行的主要区别:任务的执行方式 并发:多个任务并发(同时)执行 串行:一个任务执行完毕后,在执行下一个任务 GCD的常用函数 GCD中有2个用来执行任务的函数 用同步的方式执行任务 // queue:队列...

iOS中的内存管理注意点

物理内存&虚拟内存 物理内存 在进程运行时,为操作系统及进程提供临时存储空间,需要借助物理存储器进行存储 虚拟内存 Virtual Memory,是计算机内存管理的技术之一,为每个进程提供一个连续并私有的地址空间,从而保护每个进程的地址空间不被其它进程损坏,降低了开发的复杂度,也确保了程序执行的安全性 ...

iOS开发阅读器实现原理

数据模型认知以及分页处理逻辑 小说一般具有目录、章节、作者、页码、发布日期等等;但归结于APP来说,处理难点在于数据模型设计以及分页的设计,好的分页设计在于当用户加载完数据之后无卡顿现象 若以页码为基准数据在APP端进行分页,则存在不同屏幕尺寸下可能显示不完整的现象 因此可采用以章节为基准数据由客户端进行分页处理,不同设备屏幕下可能页码数不一致(这也合乎常理) 每一章节字数可能在1...