아이폰개발시 자주사용하는 매크로를 메모해 둔다.
매번 인터넷 찾기도 귀찮고 만들기도 귀찮고 해서..
계속 추가 갱신예정. 2014.10.111
시간지연실행GCD
- (void)doSomething {
NSData *data = [NSData data];
int64_t delay = 3.0; // In seconds
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC);
dispatch_after(time, dispatch_get_main_queue(), ^(void){
[self doSomethingLater:data];
// Or put the code from doSomethingLater: inline here
});
}
- (void)doSomethingLater:(NSData *)data {
// Do something cool with data.
}
좌표지정매크로
#define CGRectSetPosition(r, p) CGRectMake(p.x, p.y, r.size.width, r.size.height)
#define CGRectSetXY(r, x, y) CGRectMake(x, y, r.size.width, r.size.height)
#define CGRectSetX(r, x) CGRectMake(x, r.origin.y, r.size.width, r.size.height)
#define CGRectSetY(r, y) CGRectMake(r.origin.x, y, r.size.width, r.size.height)
#define CGRectSetSize(r, s) CGRectMake(r.origin.x, r.origin.y, s.width, s.height)
#define CGRectSetWidthAndHeight(r, w, h) CGRectMake(r.origin.x, r.origin.y, w, h)
#define CGRectSetWidth(r, w) CGRectMake(r.origin.x, r.origin.y, w, r.size.height)
#define CGRectSetHeight(r, h) CGRectMake(r.origin.x, r.origin.y, r.size.width, h)
메인스레드에서의 처리가 필요할때 사용하는 dispatch구문
dispatch_async(dispatch_get_main_queue(), ^{
//Animation..
});
싱글톤 사용시 사용하는 dispatch구문
+ (AppContext* )sharedInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedInstance = [[AppContext alloc] init];
//initialize
[_sharedInstance loadData];
});
return _sharedInstance;
}
deprecated메소드 표시 매크로
__attribute((deprecated("use x method")))
+(void)myMethod:(NSString*)abc __attribute((deprecated("use xxx method")));
+(void)myMethod:(NSString*)abc __deprecated; //메세지없이 간단히 표시
//프로퍼티도 같은 방식으로
@property (strong) NSObject *object __attribute((deprecated("use xxxx property")));
디버그모드 일때만 로그출력하는 매크로
#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define DLog(...)
#endif
UIColor 생성 매크로
#define RGB(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]
UIColor - Hex값으로 색상지정 카테고리 메소드
+ (id)colorWithHexString:(NSString *)hex alpha:(CGFloat)a
{
NSScanner *colorScanner = [NSScanner scannerWithString:hex];
unsigned int color;
if (![colorScanner scanHexInt:&color]) return nil;
CGFloat r = ((color & 0xFF0000) >> 16)/255.0f;
CGFloat g = ((color & 0x00FF00) >> 8) /255.0f;
CGFloat b = (color & 0x0000FF) /255.0f;
return [UIColor colorWithRed:r green:g blue:b alpha:a];
}
시뮬레이터 상태에서만 실행
#if TARGET_IPHONE_SIMULATOR
#endif
라디안 계산
*여기서 d는 각도를 뜻한다.
#define DEGREES_TO_RADIANS(d) (d * M_PI / 180)
덧붙여 설명하자면,
원둘레 = 2*M_PI*R
호의 길이 = 2*M_PI*R*각도/360 --> 각도가 360도일경우에는 원둘레가 되므로..
즉, R*M_PI*각도/180
여기서 라디안이라함은 위에 색칠한 부분을 가르킨다.
/** Degrees to Radian **/
#define degreesToRadians( degrees ) ( ( degrees ) / 180.0 * M_PI )
/** Radians to Degrees **/
#define radiansToDegrees( radians ) ( ( radians ) * ( 180.0 / M_PI ) )
웹사이트 링크모음.
appledoc로 도큐멘트생성하기 (Doxygen과 비슷한거.)
http://qiita.com/mtgto/items/c97c59d93fe67d748055
iOS개발관련 최신기술 소개해주는곳.
http://safx-dev.blogspot.jp/p/ios.html
댓글을 달아 주세요