OC

一、动态特性

1、OC可以再运行时替换方法

a、引入头文件 

#import <objc/runtime.h>

b、C语言的方法

class_replaceMethod([Kittyclass], @selector(print),myPrint, NULL);

(运行时用 myprint 方法替换 print 方法)

2、在Objective-C中,消息是通过objc_msgSend()这个runtime方法及相近的方法来实现的。这个方法需要一个targetselector,还有一些参数。理论上来说,编译器只是把消息分发变成objc_msgSend来执行。比如下面这两行代码是等价的。(对象k调用print方法)

#import <objc/message.h>

objc_msgSend(k, @selector(print));

 [k print];


二、NSObject类中一些常用的方法

//判断在Kitty类中是否存在print实例方法(instances 实例

a、[KittyinstancesRespondToSelector:@selector(print)]


//利用NSObject类中的methodForSelector:方法,可以获得一个指向方法实现的指针,并可以使用该指针直接调用方法实现,当一个消息要被发送给某个对象很多次的时候,可以直接使用methodForSelector:来进行优化。

b、[kitty methodForSelector:@selector(print)]


//标记问完成的功能,实现类似于纯虚函数的功能,实现虚基类的功能

c、[selfdoesNotRecognizeSelector:@selector(print)];


//匹配子类与父类的方法

[son isKindOfClass:[Kittyclass]]


//严格匹配类型

[son isMemberOfClass:[Kittyclass]]


"%@"
本质上,用"%@"打印对象的时候,打印的是该对象调用description 方法返回字符串。

四、同步请求&异步请求
1、同步请求:调用一个方法的时候,如果该方法的返回依赖它的功能是否完成(顺序执行)。
2、异步请求:与同步请求相反(直接跳过方法,完成之后在执行block块中的内容(回调))。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值