谈谈对iOS消息的理解

前言:

OC中的消息有“名称”或者“选择器”,可以接受参数,而且可能还有返回值。
调用方法是OC经常使用的,用OC的术语来说,这叫传递消息。OC是一门动态语言。
对比下C语言,它是一门静态语言,使用“静态绑定”-——在编译器就能决定运行时所应调用的函数。

void printHello() {
    printf("Hello, world!\n");
}
void printGoobye() {
    printf("Goodbye, 222233world!\n");
}

void dothing(int type) {
    void (*fnc) ();
    if (type == 0) {
        printHello();
    } else {
        printGoodbye();
    }
    fnc();

}

编译器在编译代码的时候就已经知道程序中有printHello和printGoodbye这两个函数了,于是会直接生成调用这些函数的指令。而函数地址实际上是硬编码在指令之中的。而

void printHello() {
    printf("Hello, world!\n");
}
void printGoobye() {
    printf("Goodbye, 222233world!\n");
}

void dothing(int type) {
    void (*fnc) ();
    if (type == 0) {
        fnc = printHello;
    } else {
        fnc = printGoodbye;
    }
    fnc();

}

这时得使用“动态绑定”

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值