[iOS] NS_AVAILABLE_IOS 와 NS_DEPRECATED_IOS 의 의미는?
http://iosdevelopertips.com/best-practices/eveything-you-need-to-know-about-ios-and-os-x-deprecated-apis.html
-
NS_AVAILABLE_IOS(5_0)
위의 접미어는 이 함수는 iOS 5.0 에 새로 들어와서 이 버전 이후에서만 유효하다는 것을 이야기한다.
만약 이 함수가 iOS 5.0 이하 버전에서 불린다면 crash 가 발생한다.
-
NS_DEPRECATED_IOS(2_0, 6_0)
위의 접미어는 2개의 버전을 표시하고 있다.
첫번째 버전은 introduced version 이고, 두번째 버전은 deprecated version 이다.
-
NS_AVAILABLE(10_8, 6_0)
위의 접미어는 IOS 라는 구문이 빠진 녀석으로, OSX 와 IOS 모두 사용 가능한 API 이다.
OSX 10.8 부터, 그리고 IOS 는 6.0 부터 도입된 녀석임을 의미한다.
-
NS_DEPRECATED(10_0, 10_6, 2_0, 4_0 )
NS_AVAILABLE 과 마찬가지로 순서대로 OSX intro, OSX deprecated, IOS intro, IOS deprecated version 을 나타낸다.
-
Deprecated 된 함수들에는 어떻게 대응해야 할 것인가? - App
대부분의 deprecated api 들은 iOS 버전 업이 되어도 실제로 사라지지는 않았다.
그러나 사라진 녀석들도 있기는 있다는 뉘앙스의 글들이 있고, Apple 이 갑자기 backward compatibility 를 지원하지 않겠다고 선언하는 경우를 대비하여
NSObject 에 있는 respondsToSelector: 함수를 먼저 call 하고 넘어가는 것이 좋아보인다.
if ([object respondsToSelector:@selector(deprecatedApi:)]{
[object deprecatedApi:];
} else{
[object newApi];
}
-
Deprecated 된 함수들에는 어떻게 대응해야 할 것인가? - Library
Library 는 사용자의 빌드 환경을 알 수 없기 때문에 App 과 같은 방식으로 작성하면 warning 이 발생하기 쉽다.
그래서 아래와 같이 정의해서 사용해야 한다.
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
if ( [object respondsToSelector:@selector(deprecatedApi:)] ){
[object deprecatedApi:];
} else
#endif
{
[object newApi];
}
'프로그래밍 놀이터 > iOS' 카테고리의 다른 글
[iOS Study] 연락처 프로그래밍 가이드 in iOS - BaseObjects (0) | 2017.06.19 |
---|---|
[iOS] CFArray 에서 CF 가 뭔가요? (0) | 2017.06.18 |
[iOS] 연락처 선택 modal 띄우기 (0) | 2017.06.16 |
[iOS] keyboard type 바꾸기 (0) | 2016.09.19 |
[iOS Study] NSUserDefaults (2) | 2016.03.27 |
댓글