ios 靈活使用巨集

2021-08-01 16:33:19 字數 1312 閱讀 3008

繼承於c語言和c++中的巨集定義,oc中也可以方便有效的支援巨集定義使用,簡單的巨集定義誰都知道,比如定義乙個int型常量,string型別的字串都可以。

如果複雜一些呢,比如用巨集定義實現單例,實現類的歸檔操作,其實都是可以的。就以類的歸檔操作為例,**說明一下

現有巨集定義 sscodingimplementation定義了一段**(歸檔和解檔兩個方法)

/**

歸檔的實現

*/#define sscodingimplementation \

- (id)initwithcoder:(nscoder *)decoder \

\return self; \

} \\

- (void)encodewithcoder:(nscoder *)encoder \

接著,有類ss***model,則在其 .m檔案中

#import "ssxxmodel.h"

@implementation ssxxmodel

//自動實現歸檔,解擋操作

sscodingimplementation

@end

即可自動實現歸檔解檔**,原理也很簡單,巨集定義相當於代表了其後面的一段**,可以認為就是原封不動將**拷貝到巨集定義所在處。

要注意巨集定義複雜形式的寫法,在除了最後一行的所有**行尾加反斜槓  \ ,以表示未結束,下一行仍是巨集定義內容。

另附單例的巨集定義如下

// @inte***ce

#define singleton_inte***ce(classname) \

+ (classname *)shared##classname;

// @implementation

#define singleton_implementation(classname) \

static classname *_instance; \

+ (id)allocwithzone:(nszone *)zone \

); \

return _instance; \

} \+ (classname *)shared##classname \

); \

return _instance; \

}

注意這裡面有兩個巨集定義,singleton_inte***ce(classname)   singleton_implementation(classname)  分別要放在單利物件的.h 和 .m檔案處。其中classname作為引數傳入即可

C 靈活使用C C 巨集定義

靈活使用c c 巨集定義 define巨集定義在c語言中有廣泛使用。對於c 語言,effective c 第二章告訴我們,在c 中盡量用const enum inline替換 define,可以避免很多陷阱。其中const用於定義常量,enum用於定義列舉,inline用於定義內聯函式。儘管 eff...

iOS 巨集的使用

由於平時在開發過程中,經常有遇到使用巨集 常量的時候。但是一直對這兩者的使用有些疑惑。尤其是對const的使用更加模糊,只知道該修飾符有很多種用法,位置不同含義不同。所以特意查詢了一下,為了以後方便自己查閱特此記錄一下。巨集就相當於是文字替換操作,是編譯期語法,並不會占用到記憶體,因為實質上它根本就...

iOS巨集 自己使用,持續更新

直接從rgb取顏色 rgb 0xff00ff define uicolor from rgb rgbvalue uicolor colorwithred float rgbvalue 0xff0000 16 255.0 green float rgbvalue 0xff00 8 255.0 blue...