【Objective-C】
ShengQiangLiu
没有最好,只有更好
展开
-
OC- Method Swizzling
1、Method Swizzling 原理Objective-C 的每一个方法都有一个唯一对应的SEL,而方法是运行时绑定的,利用这些特性,我们可以在运行时调换方法的实现。前面我们说过,IMP 是一个函数指针,通过SEL获得指向方法的入口地址。下面是正常情况下SEL对应IMP函数指针的情况:Method Swizzling 实现的原理就是调换IMP的指向:2、Method Swizzling 应用#原创 2016-03-12 20:12:56 · 863 阅读 · 0 评论 -
OC- +load方法 和 +initialize方法
1、+load 方法+load 方法是当类或分类被添加到 Objective-C runtime 时被调用的,实现这个方法可以让我们在类加载的时候执行一些类相关的行为。子类的 +load 方法会在它的所有父类的 +load 方法之后执行,而分类的 +load 方法会在它的主类的 +load 方法之后执行。但是不同的类之间的 +load 方法的调用顺序是不确定的。子类 +load 方法等父类先执行完原创 2016-03-12 16:40:43 · 1814 阅读 · 0 评论 -
OC-消息发送机制
在Objective-C中,消息直到运行时才绑定到方法实现上。下面来看看消息发送具体是怎么样的。新建一个helloClass类在 helloClass 类里面定义一个实例方法和一个类方法:新建一个 HelloWorldClass 的类,继承自 HelloClass 类,在里面写一个helloWorldMethod方法:通过clang命令:$ clang -rewrite-legacy-objc He原创 2016-03-10 22:31:02 · 1256 阅读 · 0 评论 -
OC-方法
方法和上面讲的类和对象也是一样的,它也是一个结构体:/// An opaque type that represents a method in a class definition.typedef struct objc_method *Method;它在objc/runtime.h里面的定义是struct objc_method { SEL method_name原创 2016-03-10 09:52:09 · 751 阅读 · 0 评论 -
OC-类和对象
Objective-C 对象实际上是一个C里面的结构体指针,这个我们可以通过id类型理解,大家都知道id可以指向任意对象,id本身是一个对象,然后是个指针,所以它指向对象时,不要加“ * ”。下面是id类型的定义:/// id 是一个指向 objc_object 结构体的指针.typedef struct objc_object *id;Objective-C 类实际上也是一个C里面的结构体指针原创 2016-03-09 21:44:36 · 453 阅读 · 0 评论 -
OC-单例模式
基本概念:单例设计模式是运用较为普遍,广泛且较为简单的设计模式之一,它的设计原理是始终返回一个实例,即一个类始终只有一个实例。原创 2014-08-28 22:48:20 · 612 阅读 · 0 评论 -
内存管理-@property参数详情
@property格式:@property(参数1, 参数2)类型 名字;参数可有可无,比如:@property int age;@property (nonatomic,retain) UIButton *btn;参数主要分为3类读写属性:readwrite/readonlysetter处理:assign/retain/copy原子性:ato原创 2014-07-23 21:58:35 · 798 阅读 · 0 评论 -
OC-消息转发机制
当正常的消息发送走不通的时候,会走下面的消息转发机制:消息转发机制基本分为三个步骤:1、动态方法解析2、备用接受者3、完整转发新建一个HelloClass的类,定义两个方法:@interface HelloClass : NSObject- (void)hello;+ (HelloClass *)hi;@end动态方法解析对象在接收到未知的消息时,首先会调用所属类的类方法+resolveIn原创 2016-03-12 14:48:32 · 1812 阅读 · 0 评论