• 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");带参数的消息发送

  • 相关阅读:
    c++ 容器学习 理论
    TCP和UDP发送数据包的大小问题
    key.go
    election.go
    watch.go
    txn.go
    sort.go
    retry.go
    op.go
    maintenance.go
  • 原文地址:https://www.cnblogs.com/fanxinguu/p/5489201.html
Copyright © 2020-2023  润新知