繼承於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...