文档章节

OC高效率52之理解objc_msgSend的作用

阿元
 阿元
发布于 2016/01/24 00:56
字数 137
阅读 30
收藏 1
#import "ViewController.h"
#import "stdio.h"
@interface ViewController ()

@end

@implementation ViewController
//eg:C语言静态语言
void printHelloStatic()
{
    printf("static");
}
void printGoodByeStatic()
{
    printf("Say GoodBye");
}
void doSomeThingStatic(int type)
{
    if (type==0)
    {
        printHelloStatic();
    }
    else
    {
        printGoodByeStatic();
    }
    return;
}
//eg:C语言动态语言示范
void printHello()
{
    printf("Hello.world!\n");
}
void printGoodBye()
{
    printf("Say GoodBye.world!\n");
}
void doSomeThing(int type)
{
    void (*fun) ();
    if (type == 0)
    {
        fun = printHello;
    }
    else
    {
        fun = printGoodBye;
    }
    fun();
    return ;
}


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //OC消息发送的底层原理
    NSString *parameter;
    id returnValue = [self messageName:parameter];
    
    //编译器转换为
    returnValue = objc_msgSend(self,@selector(messageName:),parameter);
}
-(id)messageName:(NSString *) str
{
    return str;
}


© 著作权归作者所有

阿元
粉丝 5
博文 163
码字总数 109777
作品 0
浦东
程序员
私信 提问
深入浅出理解消息的传递和转发机制

前言 在面试过程中你也许会被问到消息转发机制。这篇文章就是对消息的转发机制进行一个梳理。主要包括什么是消息、静态绑定/动态绑定、消息的传递和消息的转发。接下来开始进入正题。 消息的...

zhanggui
2017/10/25
0
0
深入理解 runtime(运行时)机制—— 整理

runtime 就是系统在运行时的一些机制,其中最主要的是消息机制。 OC代码,最终都是转成了runtime(c语言库)的C语言实现。 eg:类转成了runtime库里面的结构体等数据类型 方法转成了runtime...

BKF_
2016/03/07
948
0
IOS OC objc_msgSend的作用

一 消息传递 OC中调用方法也叫消息传递(pass a message),消息有名称(name) 或 选择子(selector),可以接受参数,而且可以设定返回值。 OC中向某对象传递消息,会使用动态绑定机制来决定需...

卧龙小
2015/07/06
0
0
iOS进阶之传递消息

𝟙、理解objc_msgSend的作用 对象上调用方法用OC的术语,叫做“传递消息”。消息有名称或选择子,可以接受参数,而且可能还有返回值。 先理解C语言的函数调用方式。C语言使用“静态绑定”,...

DWade_Coding
2017/10/13
0
0
OC刨根问底】-Runtime简单粗暴理解

从C的面向过程到接触OC的对象、消息的过渡初期总会有知其然不知其所以然的纠结,相关的学习资源一般都是介绍有什么、使用步骤一二三四的套路,这样就很难知道知道本质是什么,能干什么不能干...

HeroHY
2017/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
33分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部