方法->底层会编译成消息->消息查找会使用递归查找 元类是一种虚拟的类,系统实现的,用来存储类对象的 对象分为: 1. 实例对象:存在类里面, 2. 类对象:存在元类里面 实例方法: 递归查找父类 -> 最终会查找到NSObject 如果没有实现就会进入动态方法解析 /*************** ...
分类:
其他好文 时间:
2020-01-12 22:20:32
阅读次数:
121
ARC代码: NSObject *p = [NSObject new]; 编译完的MRC代码: NSObject *temp = [NSObject new]; p = [temp retain]; [temp release]; ARC代码: __weak NSObject *p = [NSObj ...
分类:
其他好文 时间:
2020-01-08 00:43:37
阅读次数:
64
1. 不调用实例变量的方法 2. 动态生成子类 (利用runtime生成:申请类,添加一些方法-set-class等方法,注册类 ) #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface NSObject (FXKV ...
分类:
其他好文 时间:
2019-12-21 20:19:05
阅读次数:
84
一个objc对象的isa的指针指向什么?有什么作用?指向他的类对象,从而可以找到对象上的方法详解:下图很好的描述了对象,类,元类之间的关系:图中实线是super_class指针,虚线是isa指针。1.Rootclass(class)其实就是NSObject,NSObject是没有超类的,所以Rootclass(class)的superclass指向nil。2.每个Class都有一个isa指针指向唯
分类:
移动开发 时间:
2019-11-29 19:48:53
阅读次数:
250
[[[UIDevice currentDevice] identifierForVendor] UUIDString]; 根据APP供应商分配,APP卸载重装后,会重新生成。 需要通过keychain存储配合使用。 @interface YLKeyChainStore : NSObject / 保存 ...
分类:
其他好文 时间:
2019-11-19 17:20:49
阅读次数:
100
NS_ASSUME_NONNULL_BEGIN @interface Robot : NSObject @property (copy,readonly) NSString *name; - (nullable instancetype)initWithName:(NSString *)name; ...
分类:
移动开发 时间:
2019-11-05 13:48:00
阅读次数:
93
class 和 struct 的区别 1.struct是值类型,class是引用类型。 值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量。 引用类型的变量存储对他们的数据引用,因此后者称为对象,因此对一个变量操作可能影响另一个变量所引用的对象。 ...
分类:
编程语言 时间:
2019-10-29 14:04:17
阅读次数:
108
在 iOS 开发中,我们经常会使用 +load 方法来做一些在 main 函数之前的操作,比如方法交换(Method Swizzle)等。现在分析一下load方法跟initialize方法的调用顺序以及区别。 1.先看下load方法 尝试定义一个继承自 NSObject 的 Person 类,并对其 ...
分类:
移动开发 时间:
2019-08-30 11:35:55
阅读次数:
156
UIView 有一个名叫 layer ,类型为 CALayer 的对象属性,它们的行为很相似,主要区别在于:CALayer 继承自 NSObject ,不能够响应事件。 这是因为 UIView 除了负责响应事件 ( 继承自 UIReponder ) 外,它还是一个对 CALayer 的底层封装。可以 ...
分类:
移动开发 时间:
2019-07-31 14:39:12
阅读次数:
157
iOS墨卡托和GPS坐标计算距离时误差测试,测试结果: 墨卡托和gps坐标来回转换没有误差。 墨卡托坐标计算出的距离比gps坐标计算出的距离大,100/92 100 = 108米,每100米多算出8米。 故随着导航距离缩短,误差会逐渐变小。 log code ...
分类:
其他好文 时间:
2019-07-30 21:37:10
阅读次数:
111