十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#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
系统宏汇集
__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标准及其指定年月的修订补充,否则数值未定义
在了解宏定义的使用前,需要说明一下合理使用宏定义确实可以提高程序的可读性,但是滥用宏定义,也会带来一些害处。这里对宏定义使用的优缺点做个简单的说明:
宏可以分为两类,一类称为对象宏,一类称为函数宏
对象宏可以定义一个量,如圆周率:
通过宏可以拿到这个变量:
打印结果:
但是看一下另外一种情况:
结果如下:
为什么*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
首先,取出第一个字节,右移八位:
然后,取出第二个字节,左移八位:
最后,按位或,至此,大小端转换完成:
有人会问宏是干什么的呢,说简单一点,就是一个键完成一系列操作,比如说,在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的键位设定 ..."
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中打开”,就可以点赞咯~