본문 바로가기

Development/IOS & Mac

is deprecated: first deprecated in iOS 7.0

Deprecate 된 함수에 대한 처리를 했음에도 불구하고 Warnning이 뜨는 경우가 많다. 아래와 같은 스타일로 코딩을 한 경우..


if ([test respondsToSelector:@selector(~~~~~~)]) {


else {


}//end if


그렇다고 Xcode 자체에서 Warnning을 Off 하는 건 불안하고.. 가만히 두고 있으려고 하니 마음이 편하지 못하다..

그럴 때는 아래와 같은 방법을 사용해 보자!


아래와 같이 정의를 하고...

#define SILENCE_DEPRECATION(expr)                                   \
do {                                                                \
_Pragma("clang diagnostic push")                                    \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")   \
expr;                                                               \
_Pragma("clang diagnostic pop")                                     \
} while(0)

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr)


이렇게 사용하자~!

SILENCE_IOS7_DEPRECATION(return [self sizeWithFont:font constrainedToSize:size]);


SILENCE_IOS7_DEPRECATION(
    view = [[MKPolylineView alloc] initWithPolyline:self];
    view.lineWidth = self.lineWidth;
    view.strokeColor = self.color;
);