Я смотрю на некоторый код, который создает изменяемый объект данных и помещает в него хэш SHA1. Если я инициализирую целевой изменяемый объект данных с помощью
CFMutableDataRef hashDataRef = (CFMutableDataRef)[[NSMutableData alloc] initWithLength:SHA_DIGEST_LENGTH];
все работает нормально. Если я изменю эту строку на
CFMutableDataRef hashDataRef = CFDataCreateMutable(kCFAllocatorDefault, SHA_DIGEST_LENGTH);
он ломается (изменяемый объект данных кажется пустым после команды SHA1). В обоих случаях строка, следующая за созданием hashDataRef
,
SHA1(CFDataGetBytePtr(inputDataRef), CFDataGetLength(inputDataRef), CFDataGetMutableBytePtr(hashDataRef));
Я не ожидал, что между ними будет какая-то разница, но явно что-то упускаю. Есть ли правильный способ Core Foundation для получения изменяемого объекта данных, который я хочу, без использования NSMutableData и бесплатного моста?