아이폰개발시 자주사용하는 매크로를 메모해 둔다.

매번 인터넷 찾기도 귀찮고 만들기도 귀찮고 해서..


계속 추가 갱신예정. 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
    // TODO:
#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

Posted by 악당잰 트랙백 0 : 댓글 0

댓글을 달아 주세요