真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開(kāi)發(fā)宏,ios宏定義

iOS開(kāi)發(fā)之條件編譯

#if? (條件語(yǔ)句)

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比新林網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式新林網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新林地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴(lài)。

條件符合執(zhí)行的語(yǔ)句

#elif (條件語(yǔ)句)

條件符合執(zhí)行的語(yǔ)句

#else

所有條件不符合時(shí),執(zhí)行的語(yǔ)句

#endif

在條件編譯中,只編譯條件滿足時(shí),之后的語(yǔ)句,其余語(yǔ)句不編譯。(這里指#if和#endif之間的語(yǔ)句)

條件語(yǔ)句一般使用宏定義

例1:在iOS10及iOS10以上運(yùn)行

#if __IPHONE_OS_VERSION_MAX_ALLOWED = __IPHONE_10_0

#endif

例2:在宏定義DEBUG時(shí)執(zhí)行執(zhí)行,沒(méi)有則不執(zhí)行

#define DEBUG

#ifdef DEBUG

條件符合執(zhí)行的語(yǔ)

#endif

[img]

ios 開(kāi)發(fā) 宏定義究竟好不好

1.首次啟動(dòng)判斷:

#define First_Launched @"firstLaunch"

2.ios7系統(tǒng)判斷:

#define IsIOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] =7.0 ? YES : NO)

3.判斷是否Retina屏、是否IPhone5、是否IPad

#define isRetina ([UIScreen instancesRespondToSelector:

@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960),

[[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone5 ([UIScreen instancesRespondToSelector:

@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136),

[[UIScreen mainScreen] currentMode].size) : NO)

#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

4.加載圖片宏:

#define LOADIMAGE(file,type) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:type]]

5.rgb顏色轉(zhuǎn)換(16進(jìn)制-10進(jìn)制)

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue 0xFF0000) 16))/255.0 green:((float)((rgbValue 0xFF00) 8))/255.0 blue:((float)(rgbValue 0xFF))/255.0 alpha:1.0]

6.設(shè)置顏色RGB

#define COLOR(R, G, B, A)

[UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]

7.去除"-(id)performSelector:(SEL)aSelector withObject:(id)object;"的警告

#define SuppressPerformSelectorLeakWarning(Stuff) \

do { \

_Pragma("clang diagnostic push") \

_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \

Stuff; \

_Pragma("clang diagnostic pop") \

} while (0)

ios 宏定義 優(yōu)缺點(diǎn) 及 何時(shí)使用

有人會(huì)問(wèn)宏是干什么的呢,說(shuō)簡(jiǎn)單一點(diǎn),就是一個(gè)鍵完成一系列操作,比如說(shuō),在KOF中,你只要把相應(yīng)的超必殺設(shè)定為宏,你按一個(gè)鍵就可以發(fā)出極其復(fù)雜的超必殺.宏定義的具體符號(hào)表示如下:u=上 d=下 f=前 b=后 df=前下 db=后下 ub=后斜跳 uf=前斜跳 1=按鍵1 2=按鍵2 3=按鍵3 4=按鍵4 5=按鍵5 6=按鍵6 s=開(kāi)始 ,=下一幀 有停頓的作用 +=表示在宏定義的招式發(fā)出的同時(shí)接受其它操作指令的輸入,經(jīng)觀察發(fā)現(xiàn),u,d,f,b就是上,下,前,后的英文單詞的第一個(gè)字母??赐炅司唧w符號(hào)表示方法后,比如KOF99nd中人物的例子.先打開(kāi)INI目錄中的KOF99nd.ini,如果你沒(méi)有這個(gè)文件,運(yùn)行一個(gè)kof99nd就會(huì)自動(dòng)生成該文件的 在記事本中查找 [Macros],會(huì)跳轉(zhuǎn)到該行,在這里就可以寫(xiě)宏命令了那個(gè)d,df,f,df,d,db,b3就是筆者剛才定義的宏,前面是一個(gè)1,就證明按數(shù)字1鍵就可以發(fā)出K'DASH的連鎖驅(qū)動(dòng)的超必殺了,那個(gè)1就可以改變的,任何鍵都可以,只要不跟上面的控制設(shè)定沖突就行了再給幾個(gè)宏給大家參考,對(duì)照一下上面的"宏定義的具體符號(hào)表示方法"就懂了.K'DASH連鎖驅(qū)動(dòng):↓↘→↘↓↙←+C宏命令: d,df,f,df,d,db,b3你把Macro1A=12+改成Macro1A=d,df,f,df,d,db,b3然后保存(注意:下面的Macro1B...J都是可以改的,一共支持十條宏命令)運(yùn)行kof99nd,看一下在“游戲”菜單中的"重新定義鍵位設(shè)定"中的"重新定義玩家1的鍵位設(shè)定 ..."

ios有自帶的一鍵宏嗎

有。

標(biāo)準(zhǔn)中一些預(yù)定義的宏

C標(biāo)準(zhǔn)中指定了一些預(yù)定義的宏,對(duì)于編程經(jīng)常會(huì)用到。下面這個(gè)表中就是一些常常用到的預(yù)定義宏。

意義

__DATE__

進(jìn)行預(yù)處理的日期(“Mmm dd yyyy”形式的字符串文字)

__FILE__

代表當(dāng)前源代碼文件名的字符串文字

__LINE__

代表當(dāng)前源代碼中的行號(hào)的整數(shù)常量

__TIME__

源文件編譯時(shí)間,格式微“hh:mm:ss”

__func__

當(dāng)前所在函數(shù)名

ios 開(kāi)發(fā) 宏定義 在哪個(gè)文件定義

系統(tǒng)宏匯集

__FILE__

當(dāng)前文件所在目錄

__DATE__

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

__FUNCTION__

當(dāng)前函數(shù)名稱(chēng)

__LINE__

當(dāng)前語(yǔ)句在源文件中的行數(shù)

__TIME__

此字符串字面值包含編譯時(shí)間,格式為“hh:mm:ss”(范例:“08:00:59”)。

__STDC__

整數(shù)常量1,表示此編譯器遵循ISOC標(biāo)準(zhǔn)。

__STDC_VERSION__

如何實(shí)現(xiàn)復(fù)合C89整部1,則這個(gè)宏的值為19940SL;如果實(shí)現(xiàn)符合C99,則這個(gè)宏的值為199901L;否則數(shù)值是未定義

__STDC_EOBTED__

(C99)實(shí)現(xiàn)為宿主實(shí)現(xiàn)時(shí)為1,實(shí)現(xiàn)為獨(dú)立實(shí)現(xiàn)為0

__STDC_IEC_559__

(C99)浮點(diǎn)數(shù)實(shí)現(xiàn)復(fù)合IBC 60559標(biāo)準(zhǔn)時(shí)定義為1,否者數(shù)值是未定義

__STDC_IEC_559_COMPLEX__

(C99)復(fù)數(shù)運(yùn)算實(shí)現(xiàn)復(fù)合IBC 60559標(biāo)準(zhǔn)時(shí)定義為1,否者數(shù)值是未定義

__STDC_ISO_10646__

(C99)定義為長(zhǎng)整型常量,yyyymmL表示wchar_t值復(fù)合ISO 10646標(biāo)準(zhǔn)及其指定年月的修訂補(bǔ)充,否則數(shù)值未定義

1、release時(shí),屏蔽log

C代碼

#if defined (DEBUG) DEBUG == 1

#else

#define NSLog(...) {};

#endif

2、在主線程或在后臺(tái)執(zhí)行block

C代碼

#define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block)

#define MAIN(block) dispatch_async(dispatch_get_main_queue(),block)

3、設(shè)備相關(guān)

C代碼

#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

#define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])

#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])

4、區(qū)分模擬器和真機(jī)

C代碼

#if TARGET_OS_IPHONE

//iPhone Device

#endif

#if TARGET_IPHONE_SIMULATOR

//iPhone Simulator

#endif

5、根據(jù)是否使用ARC做不同操作

C代碼

#if __has_feature(objc_arc)

//compiling with ARC

#else

// compiling without ARC

#endif

iOS開(kāi)發(fā)之枚舉用法使用

前言

Enum,也就是枚舉,從C語(yǔ)言開(kāi)始就有了,C++、Java、Objective-C、Swift這些語(yǔ)言,當(dāng)然都有對(duì)應(yīng)的枚舉類(lèi)型,功能可能有多有少,但是最核心的還是一個(gè)—規(guī)范的定義代碼中的狀態(tài)、選項(xiàng)等“常量”。

舉個(gè)例子,我們想要在開(kāi)發(fā)中根據(jù)四季的變化做不同的操作,我們首先想到的可能會(huì)是定義一個(gè)int型變量,通過(guò)為該變量賦不同的`值來(lái)表示四季(e.g. 1為春天,2為夏天,3為秋天,4為冬天).但是,對(duì)于閱讀該份代碼的人來(lái)講,他們并不能在短時(shí)間內(nèi)就明白數(shù)字1234所代表的具體含義.這個(gè)時(shí)候,選擇使用枚舉則可以應(yīng)對(duì)該需求

C語(yǔ)言中的枚舉

在C語(yǔ)言中定義枚舉類(lèi)型的方式如下

enum 枚舉名稱(chēng){ 標(biāo)識(shí)符 = 整型常量, 標(biāo)識(shí)符 = 整型常量, 標(biāo)識(shí)符 = 整型常量, 標(biāo)識(shí)符 = 整型常量};

以"定義一個(gè)枚舉名稱(chēng)為T(mén)est,擁有TestA、TestB等枚舉成員的枚舉類(lèi)型"為例,定義方式如下

enum Test{ TestA = 0, TestB = 1, TestC = 2, TestD = 3};

注1: 當(dāng)枚舉成員都未設(shè)置"=整型常量"時(shí),默認(rèn)從第一個(gè)標(biāo)識(shí)符開(kāi)始,從0依次遞增加1

注2: 當(dāng)為某個(gè)枚舉成員設(shè)置"=整型常量"時(shí),其后面的標(biāo)識(shí)符會(huì)在此基礎(chǔ)上依次遞增加1

在使用該枚舉類(lèi)型時(shí),我們需要?jiǎng)?chuàng)建一個(gè)枚舉變量

enum 枚舉名稱(chēng) 枚舉變量 = 枚舉變量值;

以"創(chuàng)建一個(gè)枚舉名稱(chēng)為T(mén)est的枚舉變量test,并為其賦值TestB"為例

enum Test test = TestB;

注: 枚舉變量值的取值只能從對(duì)應(yīng)枚舉類(lèi)型的枚舉成員中選擇

我們也可以在定義枚舉類(lèi)型的同時(shí)定義枚舉變量,該枚舉變量不用初始化,可直接對(duì)其進(jìn)行賦值并使用

enum Test{ TestA = 0, TestB, TestC, TestD} test;

注: 該枚舉名稱(chēng)可以省略,直接定義枚舉變量即可(稱(chēng)作"匿名枚舉")

通過(guò)typedef為枚舉類(lèi)型設(shè)置一個(gè)"別名",這樣便可以像使用int一樣使用枚舉類(lèi)型

typedef enum _Test{ TestA = 0, TestB, TestC, TestD} Test;

定義"別名"后,便可采用如下方式定義枚舉變量

Test test = TestB;

針對(duì)匿名枚舉,在通過(guò)typedef設(shè)置"別名"便變成如下形式

typedef enum{ TestA = 0, TestB, TestC, TestD} Test;

定義"別名"后,便可采用如下方式定義枚舉變量

Test test = TestB;

OC語(yǔ)言中的枚舉

在Objective-C語(yǔ)言中,Apple在iOS6中引入了兩個(gè)宏來(lái)重新定義枚舉類(lèi)型(即:NS_ENUM與NS_OPTIONS),這兩者在本質(zhì)上并沒(méi)有差別,都是用于定義枚舉類(lèi)型,但是在使用中NS_ENUM多用于一般枚舉,而NS_OPTIONS則多用于帶有移位運(yùn)算的枚舉

NS_ENUM使用示例

typedef NS_ENUM(NSInteger, Test){ TestA = 0, TestB, TestC, TestD};

NS_OPTIONS使用示例

typedef NS_OPTIONS(NSUInteger, Test) { TestA = 1 0, TestB = 1 1, TestC = 1 2, TestD = 1 3};

typedef NS_OPTIONS(NSUInteger, Test) { TestNone = 0, TestA = 1 0, TestB = 1 1, TestC = 1 2, TestD = 1 3};

帶有移位運(yùn)算的枚舉多用于同一個(gè)枚舉變量可以同時(shí)賦值多個(gè)枚舉成員的情況,其原理就是將各個(gè)枚舉值按位或(|),因?yàn)橐莆贿\(yùn)算的枚舉成員可以保證按位或(|)計(jì)算之后結(jié)果的唯一性,所以每種結(jié)果都能反向計(jì)算出是由哪幾個(gè)枚舉成員按位或(|)而成

以"使用按位或(|)為枚舉變量test同時(shí)賦值枚舉成員TestA、TestB與TestC"為例

Test test = TestA | TestB;test |= TestC;

以"使用按位異或(^)為枚舉變量test去掉一個(gè)枚舉成員TestC"為例

Test test = TestA | TestB | TestC;test ^= TestC;

注: 如果枚舉變量test本身并未賦值TestC,那么使用按位異或(^)會(huì)為枚舉變量test多賦值一個(gè)枚舉成員TestC

以"使用按位與()判斷枚舉變量test是否賦值了枚舉成員TestA"為例

Test test = TestA | TestB;if (test TestA){ NSLog(@"yes");}else{ NSLog(@"no");}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望能對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。


本文標(biāo)題:ios開(kāi)發(fā)宏,ios宏定義
文章來(lái)源:http://weahome.cn/article/dsohoio.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部