创建对象并且初始化(这里以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");带参数的消息发送