Get Xcode 5 to warn about new API calls

后端 未结 4 1197
北恋
北恋 2020-12-11 12:47

There was a method for Xcode 4.x:

#define __AVAILABILITY_TOO_NEW __attribute__((deprecated(\"TOO NEW!\"))) __attribute__((weak_import))

#if __IPHONE_OS_VERS         


        
4条回答
  •  清歌不尽
    2020-12-11 13:15

    I found some other information on the topic. This will redefine a different macro (NS_AVAILABLE_IOS). Perhaps it will work a bit better than

    (Source https://www.albertopasca.it/whiletrue/xcode-warn-about-new-api-classes-and-methods/)

    #import 
    #import 
    
    #if( 1 )
    
    #define APICHECK_2_0( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_2_1( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_2_2( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_3_0( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_3_1( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_3_2( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_4_0( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_4_1( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_4_2( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_4_3( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_5_0( _ios ) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    #define APICHECK_5_1( _ios ) __attribute__((deprecated("UNAVAILABLE PRIOR TO 5.1")))
    #define APICHECK_6_0( _ios ) __attribute__((deprecated("UNAVAILABLE PRIOR TO 6.0")))
    #define APICHECK_6_1( _ios ) __attribute__((deprecated("UNAVAILABLE PRIOR TO 6.1")))
    #define APICHECK_NA( _ios )  __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_##_ios)
    
    #undef NS_AVAILABLE_IOS
    #define NS_AVAILABLE_IOS(_ios) APICHECK_ ## _ios( _ios )
    
    #undef NS_AVAILABLE
    #define NS_AVAILABLE(_mac, _ios) APICHECK_ ## _ios( _ios )
    
    #endif
    

    You can use conditionals the same way as before (#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0 etc). Note that I have not tested this because I don't have Xcode 5 on my machine yet. If you want to turn the warnings into errors you can use __attribute__((unavailable("UNAVAILABLE PRIOR TO 6.1"))) etc.

    You can also try using this program, though it is paid. http://www.deploymateapp.com/

提交回复
热议问题