Доступны ли CC_MD5() и CC_SHA1() в iOS 4?
Я хочу использовать MD5 или SHA-1 в своем приложении для iOS, предназначенном для iOS 4 и более поздних версий. Я использую функции CC_MD5() и CC_SHA1() из CommonCrypto/CommonDigest.h. Кажется, что он отлично работает на iPhone под управлением iOS 4.1 и в симуляторе iPhone 4.0, но я обеспокоен тем, что функции описаны в iOS 5 SDK, который поставляется с XCode 4.2 следующим образом:
extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);
extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);
Кажется, это указывает на то, что функции доступны только в iOS 5 и более поздних версиях.
Разрешены ли эти функции в приложении для iOS 4, и если да, есть ли официальная ссылка на этот факт?
4 ответа
В заголовочном файле по пути: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/include/CommonCrypto/CommonDigest.h
мы можем увидеть:
extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
Итак, Apple теперь говорит нам, что это поддерживается:-)
CC_MD5 работает в iOS 4.3. Я думаю, что это должно быть недокументировано до iOS 5 или чего-то еще.
Лучший способ узнать, доступны ли какие-либо функции или методы класса, - установить для цели развертывания проекта минимальную версию ios, над которой вы хотите, чтобы ваше приложение работало, и провести тестирование на реальном устройстве (или в симуляторе iPhone, но я думаю, что настоящее устройство) является лучшим решением) через целевую версию развертывания.
Если он недоступен, ваше приложение будет аварийно завершено, и отладчик сообщит вам, какие функции не используются в этой версии iOS. Вам придется проверить с большей версией.
Если это работает на реальном устройстве, эти функции доступны.:)