ios高级- runtime msgSend

创建对象并且初始化(这里以UIView为例)

一般我们都是用[[UIView alloc]init]来创建初始化对象,其实在编译的时候回转换成以下代码形式

UIView * view = ((UIView * (*) (id,SEL))objc_msgSend)(id[UIView class], @selector(alloc))

view = ((UIView * (*) (id,SEL))objc_msgSend)(id view ,@selector(init))

这里要发送消息,我们需要强转函数指针类型,(UIView * (*) (id,SEL))代表得是一个对象指针返回值和两个参数的函数指针。

view = ((UIView * (*) (id,SEL,NSString *))objc_msgSend)(id view ,@selector(init),@"aaaaaa");带参数的消息发送

posted @ 2016-05-13 14:00  繁星ll  阅读(212)  评论(0编辑  收藏  举报