十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
#if? (條件語句)

創(chuàng)新互聯(lián)長期為近千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為甘井子企業(yè)提供專業(yè)的成都做網站、成都網站制作,甘井子網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
條件符合執(zhí)行的語句
#elif (條件語句)
條件符合執(zhí)行的語句
#else
所有條件不符合時,執(zhí)行的語句
#endif
在條件編譯中,只編譯條件滿足時,之后的語句,其余語句不編譯。(這里指#if和#endif之間的語句)
條件語句一般使用宏定義
例1:在iOS10及iOS10以上運行
#if __IPHONE_OS_VERSION_MAX_ALLOWED = __IPHONE_10_0
#endif
例2:在宏定義DEBUG時執(zhí)行執(zhí)行,沒有則不執(zhí)行
#define DEBUG
#ifdef DEBUG
條件符合執(zhí)行的語
#endif
系統(tǒng)宏匯集
__FILE__
當前文件所在目錄
__DATE__
“替代文字”是一個含有編譯日期的字符串字面值,日期格式為“mm dd yyyy”(例如:“Mar 19 2006”)。如果日期小于10日,就在日的前面放一個空格符。NSLog(@"_DATE_=%s",__DATE__);
__FUNCTION__
當前函數(shù)名稱
__LINE__
當前語句在源文件中的行數(shù)
__TIME__
此字符串字面值包含編譯時間,格式為“hh:mm:ss”(范例:“08:00:59”)。
__STDC__
整數(shù)常量1,表示此編譯器遵循ISOC標準。
__STDC_VERSION__
如何實現(xiàn)復合C89整部1,則這個宏的值為19940SL;如果實現(xiàn)符合C99,則這個宏的值為199901L;否則數(shù)值是未定義
__STDC_EOBTED__
(C99)實現(xiàn)為宿主實現(xiàn)時為1,實現(xiàn)為獨立實現(xiàn)為0
__STDC_IEC_559__
(C99)浮點數(shù)實現(xiàn)復合IBC 60559標準時定義為1,否者數(shù)值是未定義
__STDC_IEC_559_COMPLEX__
(C99)復數(shù)運算實現(xiàn)復合IBC 60559標準時定義為1,否者數(shù)值是未定義
__STDC_ISO_10646__
(C99)定義為長整型常量,yyyymmL表示wchar_t值復合ISO 10646標準及其指定年月的修訂補充,否則數(shù)值未定義
在了解宏定義的使用前,需要說明一下合理使用宏定義確實可以提高程序的可讀性,但是濫用宏定義,也會帶來一些害處。這里對宏定義使用的優(yōu)缺點做個簡單的說明:
宏可以分為兩類,一類稱為對象宏,一類稱為函數(shù)宏
對象宏可以定義一個量,如圓周率:
通過宏可以拿到這個變量:
打印結果:
但是看一下另外一種情況:
結果如下:
為什么*2的結果不是140,是110呢?
因為前面提到過了,宏只是簡單地替換,所以 2的時候,實際是30+40 2
函數(shù)宏的作用就類似于一個函數(shù)一樣。如:
其結果如下:
再來看另外一個例子:
這里需要注意一個問題,如果宏太長,可以使用"/"進行換行
這樣便是大大增加了可讀性
在OC中使用字符串都需要使用@"",如果想直接使用字符串可以添加一個"#":
再看一個關于##的操作符,連接符##用來將兩個token連接為一個token:
提到可變參數(shù)宏,其實能夠想到的,最多的便是NSLog。可變參數(shù),可以利用 VA__ARGS進行讀取:
打印結果如下:
例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那么0x11為高字節(jié),0x22為低字節(jié)。對于大端模式,就將0x11放在低地址中,即0x0010中;0x22放在高地址中,即0x0011中。小端模式,剛好相反
一個判斷當前系統(tǒng)是大端還是小端的函數(shù),小端則返回1:
以上函數(shù),若在小端系統(tǒng)下,其字節(jié)序為,b[0]中存儲00000001,后三個字節(jié)依次存儲00000000,大端系統(tǒng)下反之
在iOS開發(fā)中,蘋果已經為我們定義好了一套用于大小端轉換的宏定義:
NTOHL,network to host,L、S、LL分別對應long、short、long long
HTONL,反之
大小端轉換原理如下:
假設一個short類型的數(shù)字:0x1122,那么其二進制形式為:00010001 00100010
首先,取出第一個字節(jié),右移八位:
然后,取出第二個字節(jié),左移八位:
最后,按位或,至此,大小端轉換完成:
有人會問宏是干什么的呢,說簡單一點,就是一個鍵完成一系列操作,比如說,在KOF中,你只要把相應的超必殺設定為宏,你按一個鍵就可以發(fā)出極其復雜的超必殺.宏定義的具體符號表示如下:u=上 d=下 f=前 b=后 df=前下 db=后下 ub=后斜跳 uf=前斜跳 1=按鍵1 2=按鍵2 3=按鍵3 4=按鍵4 5=按鍵5 6=按鍵6 s=開始 ,=下一幀 有停頓的作用 +=表示在宏定義的招式發(fā)出的同時接受其它操作指令的輸入,經觀察發(fā)現(xiàn),u,d,f,b就是上,下,前,后的英文單詞的第一個字母??赐炅司唧w符號表示方法后,比如KOF99nd中人物的例子.先打開INI目錄中的KOF99nd.ini,如果你沒有這個文件,運行一個kof99nd就會自動生成該文件的 在記事本中查找 [Macros],會跳轉到該行,在這里就可以寫宏命令了那個d,df,f,df,d,db,b3就是筆者剛才定義的宏,前面是一個1,就證明按數(shù)字1鍵就可以發(fā)出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)是十六進制數(shù)字,這意味著它使用十六個不同的符號。
在 CSS 中,我們可以使用 6 位十六進制數(shù)字來表示顏色,每 2 位分別表示紅色 (R)、綠色 (G) 和藍色 (B) 成分。例如,#000000 是黑色,同時也是可能的數(shù)值中最小的。#FF0000是紅色, #00FF00是綠色, #0000FF是藍色。
你可能會疑惑為什么我們使用6位數(shù)來表示一種顏色而不是只用一位或二位,答案是使用6位數(shù)可提供給我們巨大數(shù)量的顏色變化。
會有多少種可能的顏色?16 個值和 6 個位置意味著我們有 16 的 6 次方,或者說超過 1600 萬種可能的顏色。
在實際開發(fā)當中,我們會遇到各種設置顏色的場景。有通過RGB三原色設置的、有通過服務器返回十六進制字符串設置的、有設置顏色同時還設置透明度的、有本地使用十六進制設置的,本文將iOS中常用RGB十六進制顏色設置的宏定義及相關分類方法做了一個總結。
RGB
十六進制顏色 Hex
顏色設置宏定義的使用 :
分類的小括號中有分類名字
分類特點:
UIColor + Addition.h 聲明
UIColor + Addition.m 實現(xiàn)
在使用的位置導入頭文件,或者直接放到pch文件中。
設置RGB顏色
獲取顏色的RGB值
本地設置十六進制顏色
字符串設置十六進制顏色
我是楚簡約,感謝您的閱讀,
喜歡就點個贊唄,“?喜歡”,
鼓勵一下,你在看,我就繼續(xù)寫~
非用戶,可以點右上角的三個“...”,然后"在Safari中打開”,就可以點贊咯~