ios开发宏定义,ios是宏内核吗

iOS开发之条件编译

#if  (条件语句)

创新互联长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为甘井子企业提供专业的成都做网站、成都网站制作,甘井子网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

条件符合执行的语句

#elif (条件语句)

条件符合执行的语句

#else

所有条件不符合时,执行的语句

#endif

在条件编译中,只编译条件满足时,之后的语句,其余语句不编译。(这里指#if和#endif之间的语句)

条件语句一般使用宏定义

例1:在iOS10及iOS10以上运行

#if __IPHONE_OS_VERSION_MAX_ALLOWED = __IPHONE_10_0

#endif

例2:在宏定义DEBUG时执行执行,没有则不执行

#define DEBUG

#ifdef DEBUG

条件符合执行的语

#endif

iOS 宏定义方法

系统宏汇集

__FILE__

当前文件所在目录

__DATE__

“替代文字”是一个含有编译日期的字符串字面值,日期格式为“mm dd yyyy”(例如:“Mar 19 2006”)。如果日期小于10日,就在日的前面放一个空格符。NSLog(@"_DATE_=%s",__DATE__);

__FUNCTION__

当前函数名称

__LINE__

当前语句在源文件中的行数

__TIME__

此字符串字面值包含编译时间,格式为“hh:mm:ss”(范例:“08:00:59”)。

__STDC__

整数常量1,表示此编译器遵循ISOC标准。

__STDC_VERSION__

如何实现复合C89整部1,则这个宏的值为19940SL;如果实现符合C99,则这个宏的值为199901L;否则数值是未定义

__STDC_EOBTED__

(C99)实现为宿主实现时为1,实现为独立实现为0

__STDC_IEC_559__

(C99)浮点数实现复合IBC 60559标准时定义为1,否者数值是未定义

__STDC_IEC_559_COMPLEX__

(C99)复数运算实现复合IBC 60559标准时定义为1,否者数值是未定义

__STDC_ISO_10646__

(C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO 10646标准及其指定年月的修订补充,否则数值未定义

iOS宏定义介绍

在了解宏定义的使用前,需要说明一下合理使用宏定义确实可以提高程序的可读性,但是滥用宏定义,也会带来一些害处。这里对宏定义使用的优缺点做个简单的说明:

宏可以分为两类,一类称为对象宏,一类称为函数宏

对象宏可以定义一个量,如圆周率:

通过宏可以拿到这个变量:

打印结果:

但是看一下另外一种情况:

结果如下:

为什么*2的结果不是140,是110呢?

因为前面提到过了,宏只是简单地替换,所以 2的时候,实际是30+40 2

函数宏的作用就类似于一个函数一样。如:

其结果如下:

再来看另外一个例子:

这里需要注意一个问题,如果宏太长,可以使用"/"进行换行

这样便是大大增加了可读性

在OC中使用字符串都需要使用@"",如果想直接使用字符串可以添加一个"#":

再看一个关于##的操作符,连接符##用来将两个token连接为一个token:

提到可变参数宏,其实能够想到的,最多的便是NSLog。可变参数,可以利用 VA__ARGS进行读取:

打印结果如下:

字节大小端

例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中;0x22放在高地址中,即0x0011中。小端模式,刚好相反

一个判断当前系统是大端还是小端的函数,小端则返回1:

以上函数,若在小端系统下,其字节序为,b[0]中存储00000001,后三个字节依次存储00000000,大端系统下反之

在iOS开发中,苹果已经为我们定义好了一套用于大小端转换的宏定义:

NTOHL,network to host,L、S、LL分别对应long、short、long long

HTONL,反之

大小端转换原理如下:

假设一个short类型的数字:0x1122,那么其二进制形式为:00010001 00100010

首先,取出第一个字节,右移八位:

然后,取出第二个字节,左移八位:

最后,按位或,至此,大小端转换完成:

ios 宏定义 优缺点 及 何时使用

有人会问宏是干什么的呢,说简单一点,就是一个键完成一系列操作,比如说,在KOF中,你只要把相应的超必杀设定为宏,你按一个键就可以发出极其复杂的超必杀.宏定义的具体符号表示如下:u=上 d=下 f=前 b=后 df=前下 db=后下 ub=后斜跳 uf=前斜跳 1=按键1 2=按键2 3=按键3 4=按键4 5=按键5 6=按键6 s=开始 ,=下一帧 有停顿的作用 +=表示在宏定义的招式发出的同时接受其它操作指令的输入,经观察发现,u,d,f,b就是上,下,前,后的英文单词的第一个字母。看完了具体符号表示方法后,比如KOF99nd中人物的例子.先打开INI目录中的KOF99nd.ini,如果你没有这个文件,运行一个kof99nd就会自动生成该文件的 在记事本中查找 [Macros],会跳转到该行,在这里就可以写宏命令了那个d,df,f,df,d,db,b3就是笔者刚才定义的宏,前面是一个1,就证明按数字1键就可以发出K'DASH的连锁驱动的超必杀了,那个1就可以改变的,任何键都可以,只要不跟上面的控制设定冲突就行了再给几个宏给大家参考,对照一下上面的"宏定义的具体符号表示方法"就懂了.K'DASH连锁驱动:↓↘→↘↓↙←+C宏命令: d,df,f,df,d,db,b3你把Macro1A=12+改成Macro1A=d,df,f,df,d,db,b3然后保存(注意:下面的Macro1B...J都是可以改的,一共支持十条宏命令)运行kof99nd,看一下在“游戏”菜单中的"重新定义键位设定"中的"重新定义玩家1的键位设定 ..."

iOS 常用RGB十六进制颜色设置的宏定义、方法

hexadecimal code(十六进制编码),简写为 hex code。Hexadecimals (或 hex)是十六进制数字,这意味着它使用十六个不同的符号。

在 CSS 中,我们可以使用 6 位十六进制数字来表示颜色,每 2 位分别表示红色 (R)、绿色 (G) 和蓝色 (B) 成分。例如,#000000 是黑色,同时也是可能的数值中最小的。#FF0000是红色, #00FF00是绿色, #0000FF是蓝色。

你可能会疑惑为什么我们使用6位数来表示一种颜色而不是只用一位或二位,答案是使用6位数可提供给我们巨大数量的颜色变化。

会有多少种可能的颜色?16 个值和 6 个位置意味着我们有 16 的 6 次方,或者说超过 1600 万种可能的颜色。

在实际开发当中,我们会遇到各种设置颜色的场景。有通过RGB三原色设置的、有通过服务器返回十六进制字符串设置的、有设置颜色同时还设置透明度的、有本地使用十六进制设置的,本文将iOS中常用RGB十六进制颜色设置的宏定义及相关分类方法做了一个总结。

RGB

十六进制颜色 Hex

颜色设置宏定义的使用 :

分类的小括号中有分类名字

分类特点:

UIColor + Addition.h 声明

UIColor + Addition.m 实现

在使用的位置导入头文件,或者直接放到pch文件中。

设置RGB颜色

获取颜色的RGB值

本地设置十六进制颜色

字符串设置十六进制颜色

我是楚简约,感谢您的阅读,

喜欢就点个赞呗,“❤喜欢”,

鼓励一下,你在看,我就继续写~

非用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~


本文标题:ios开发宏定义,ios是宏内核吗
网站路径:http://ybzwz.com/article/dscgdpo.html