iOSマクロのいくつかの使用
14238 ワード
開発においては、マクロやカスタムマクロを使用する必要があります.
マクロは名前付きコードセグメントです.マクロを使用するとコードセグメントの置換が行われます.二つのマクロのタイプがあります.一つはクラスオブジェクトのマクロで、パッケージに使用されるデータオブジェクトで、もう一つはクラス関数のマクロで、パッケージ関数の呼び出しです.
以下はC言語で使用されるマクロコマンドです.デバイス関連のマクロ UI一般マクロ は、全体的に区別するためのマクロ である.色初期化マクロ サンドボックスディレクトリファイルのマクロ マクロ関数の一部 ここは他の人の参考にしていますので、参考にしてみてください.
マクロは名前付きコードセグメントです.マクロを使用するとコードセグメントの置換が行われます.二つのマクロのタイプがあります.一つはクラスオブジェクトのマクロで、パッケージに使用されるデータオブジェクトで、もう一つはクラス関数のマクロで、パッケージ関数の呼び出しです.
以下はC言語で使用されるマクロコマンドです.
#define
#undef
#include
#include_next #include ,
#if , C if
#ifdef , ,
#ifndef #ifdef ,
#elif #if, #ifdef, #ifndef #elif , #elif , C else-if
#else #if, #ifdef, #ifndef , , #else , C else
#endif #if, #ifdef, #ifndef .
#defined #if, #elif ,
#line
#
## (token)
#pragma
#warning
#error
マクロのいくつかのシステムツール方法...:
__COUNTER__ , ++,
__FILE__: , log
__LINE__: , log
__func__: scope , log
__DATE__: “ ” , “mm dd yyyy”( :“Mar 19 2006”)。 10 , 。NSLog(@"_DATE_=%s",__DATE__);
__FUNCTION__:
__TIME__: , “hh:mm:ss”( :“08:00:59”)。
__STDC__: 1, ISOC 。
iOSシステムにはバージョン制御用のマクロがいくつか定義されています.__IPHONE_OS_VERSION_MIN_REQUIRED // app
__IPHONE_OS_VERSION_MAX_ALLOWED // app
#define __IPHONE_7_0 70000
#define __IPHONE_7_1 70100
#define __IPHONE_8_0 80000
#define __IPHONE_8_1 80100
#define __IPHONE_8_2 80200
#define __IPHONE_8_3 80300
#define __IPHONE_8_4 80400
#define __IPHONE_9_0 90000
#define __IPHONE_9_1 90100
#define __IPHONE_9_2 90200
よく使うカスタムマクロの整理:#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])
#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
// 7.0 ios
#define iOS7_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")
#define IsNilOrNull(_ref) (((_ref) == nil) || ([(_ref) isEqual:[NSNull null]]))
//
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
#define UI_NAVIGATION_BAR_HEIGHT 44
#define UI_TOOL_BAR_HEIGHT 44
#define UI_TAB_BAR_HEIGHT 49
#define UI_STATUS_BAR_HEIGHT 20
#define UI_SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define UI_SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
/* ****** release , NSLog ****** */
#if defined (DEBUG) && DEBUG == 1
#else
#define NSLog(...) {};
#endif
// log
#ifdef DEBUG
# define DLog(...) NSLog((@"%s [Line %d] %@"), __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
# define SLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...)
# define SLog(...)
#endif
/* ****** ARC ****** */
#if __has_feature(objc_arc)
//compiling with ARC
#else
// compiling without ARC
#endif
/* ****** ****** */
#if TARGET_OS_IPHONE
//iPhone Device
#endif
#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif
// rgb (16 ->10 )
#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]
// RGB
#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
#define RGB(r,g,b) RGBA(r,g,b,1.0f)
//
#define kPathTemp NSTemporaryDirectory()
#define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
#define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]
#define kPathSearch [kPathDocument stringByAppendingPathComponent:@"Search.plist"]#define kPathMagazine [kPathDocument stringByAppendingPathComponent:@"Magazine"]
#define kPathDownloadedMgzs [kPathMagazine stringByAppendingPathComponent:@"DownloadedMgz.plist"]
#define kPathDownloadURLs [kPathMagazine stringByAppendingPathComponent:@"DownloadURLs.plist"]
#define kPathOperation [kPathMagazine stringByAppendingPathComponent:@"Operation.plist"]
#define kPathSplashScreen [kPathCache stringByAppendingPathComponent:@"splashScreen"]
#define degreesToRadian(x) (M_PI * (x) / 180.0) //
#define radianToDegrees(radian) (radian*180.0)/(M_PI) //
#pragma mark -
#define DeclareSingletonInterface(className) \
+(classname *)shared##classname
#define ImplementSingletonInterface(className) \
+(classname *)shared##classname { \
static dispatch_once_t onceToken = 0; \
static id sharedInstance = nil; \
dispatch_once(&onceToken, ^{ \
sharedInstance = [[self alloc] init]; \
}); \
return sharedInstance; \
}