w h y ? y o u a r e h e r e ?

objc_msgSend的具体流程如下: 通过isa指针找到所属类 查找类的cache列表 为什么会有cache列表呢 因为cache列表会提高效率 经常用的方法放到一个一个表里查的更快 如果没有则下一步 查找类的方法列表 如果能找到与选择子名称相符的方法, 就跳至其实现代码 找不到 就沿着继承体系 ...
阅读全文 »

UIView的继承结构为UIResponder : NSObject UIResponder是用来响应事件的,也就是UIView可以响应用户事件 CALayer的继承结构为NSObject 直接从NSObject继承 因为缺少了UIResponder类 所以CALayer不能响应任何用户事件 CAL ...
阅读全文 »

Swift有一个好处就是不用在每行结尾加;号 但是一行有多个语句是就要加上; 但当你在同一行书写多条语句时,必须用分号隔开: let定义常量 var定义变量 lazy延迟存储属性必须用var var定义变量带get和set方法的叫计算属性 override重写属性的时候也要加上 final的类不能被 ...
阅读全文 »

生成不加密的私钥 12openssl genrsa -out rsa_private_key.pem 1024openssl pkcs8 -in rsa_private_key.pem -out rsa_private_key_pkcs8.pem -nocrypt -topk8 生成对应私钥的公钥 ...
阅读全文 »

block从表面看相当于一个带有自动变量的匿名函数 因为block可以传入参数有并且有返回值 在block里还能获取到外部的变量 但是默认block是不能修改局部变量的值 而且block捕获的是变量的瞬时的值 但是block可以修改静态变量、静态全局变量和全局变量 如果想要修改局部变量的值 需要在局 ...
阅读全文 »

顾名思义 协议就是双方要协商好的意思 也就是一方负责制定规则,一方需要遵守规则 在iOS中协议主要是用于方法回调 还有就是代码的封装 因为协议里面的方法默认是必须实现 这样的话就可以把必须实现的方法写到协议里面 防止使用的时候被遗忘更加的安全 还有就是在iOS中没有多继承 但是可以通过多个协议来实现 ...
阅读全文 »

说到面向对象不得不说的三个特点 封装继承和多态 比如用计算器来说 假如目前只是需要加法 面向过程就是直接把加法的代码里写进去 面向对象会把计算器单独作为一个文件 然后把加法单独写一个方法 然后后来有的地方需要新增一个减法的功能 面向过程就会在当前的地方直接把减法的写进去 面向对象只需要在建一个文件继 ...
阅读全文 »

iOS内存由低到高分为五个区 .text段(代码区)、.data段(已初始化的全局变量、静态变量)、.bss段(未初始化的全局变量、静态变量)、堆区、栈区 栈内存由系统管理 堆内存由开发者管理 栈内存存储变量参数 堆内存存储对象 内存管理的几种方式 手动管理MRC 谁创建,谁释放。谁retain,谁 ...
阅读全文 »

Category分类 Extension扩展 Extension是编译时就决议生效的可以添加实例变量方法属性 Category是运行时决议生效的可以添加方法属性(属性不会自动生成getset方法需要手动生成) 1234567891011121314struct objc_class { ...
阅读全文 »

说到KVC不得不说Set和Get 正常访问属性都是用Set方法和Get方法 但是苹果还提供了另外一种方法就是KVC全称Key-Value Coding 中文就是键值编码 简单点来说就是直接 用valueForKey和valueForKeyPath来获取属性的值 用 setValue forKey和 ...
阅读全文 »