摘要:nan or +inf报错 一、nan的意思是 not a number 不是数字 nan一般是因为在float类型经过函数运行后,出现了不为数字的值,主要常见原因有 除以0 就是你的除数为0 (10/0) 或者 除数或者被除数为null (这两种情况在你做除法的时候可能不会出现错误,但是当你设置c 阅读全文
posted @ 2021-04-15 13:49 俊华的博客 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用。但是两个方法的不同点会导致应用层面上性能的显著差异。 一、+ initialize 方法和+load 调用时机 先来看一个表 方法+(void)load+(void)initializ 阅读全文
posted @ 2021-01-20 20:00 俊华的博客 阅读(149) 评论(0) 推荐(0) 编辑
摘要:Category的实现原理 Category编译之后的底层结构是struct category_t,里面存储着分类的对象方法、类方法、属性、协议信息 在程序运行的时候,runtime会将Category的数据,合并到类信息中(类对象、元类对象中) Category和Class Extension的区 阅读全文
posted @ 2021-01-19 18:44 俊华的博客 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1、什么是内存对齐 还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占4+1=5byte;但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。 //32位系统 #include<stdi 阅读全文
posted @ 2021-01-19 12:04 俊华的博客 阅读(410) 评论(0) 推荐(0) 编辑
摘要:KVC的全称是Key-Value Coding,即“键值编码”,可以通过指定的key来访问相应的对象属性。 常见的API有: (void)setValue:(id)value forKeyPath:(NSString *)keyPath; (void)setValue:(id)value forKe 阅读全文
posted @ 2020-11-24 15:57 俊华的博客 阅读(142) 评论(0) 推荐(0) 编辑
摘要:KVO全称为Key-Value Observing, 即键值监听,用于指定对象属性值的改变。 问题一、iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 利用RuntimeAPI动态生成一个子类,并且让instance对象的isa指向这个全新的子类 当修改instance对象的属性时, 阅读全文
posted @ 2020-11-23 20:31 俊华的博客 阅读(109) 评论(0) 推荐(0) 编辑
摘要:实例对象( instance)、类对象(class)、元类对象(meta-class)的内部结构分析 本文使用的objc源码版本为objc4-756.2。 Class本质上为一个结构体类型: typedef struct objc_class *Class; 实例对象的定义 struct objc_ 阅读全文
posted @ 2020-08-27 19:10 俊华的博客 阅读(178) 评论(0) 推荐(0) 编辑
摘要:isa指针 instance对象的isa指向class对象,当调用对象方法时,通过instance对象的isa找到class,最后找到对象方法的实现进行调用。 class对象的isa指向meta-class,当调用类方法时,通过class对象的isa找到meta-class,最后找到类方法的实现进行 阅读全文
posted @ 2020-08-27 18:49 俊华的博客 阅读(136) 评论(0) 推荐(0) 编辑
摘要:weak 关键字的运用在 iOS 当中属于基础知识,在面试的时候问 weak 的用处,就像两个 iOS 程序员见面寒暄问候一样普通了。 weak 的常见场景是在 delegate,block,NSTimer 中使用,以避免循环引用所带来的内存泄漏,这是教科书式的用法。 以下是一些有趣的应用。 wea 阅读全文
posted @ 2020-08-19 16:09 俊华的博客 阅读(302) 评论(0) 推荐(0) 编辑
摘要:weak和assign区别 经常会有面试题问weak和assign的区别,这里介绍一下。 weak和strong是对应的,一个是强引用,一个是弱引用。weak和assign的区别主要是体现在两者修饰OC对象时的差异。上面也介绍过,assign通常用来修饰基本数据类型,如int、float、BOOL等 阅读全文
posted @ 2020-08-19 16:04 俊华的博客 阅读(338) 评论(0) 推荐(0) 编辑