0
는 여기에서 찾을 : https://github.com/matthiasplappert/Secure-NSUserDefaultsEXC_BAD_ACCESS 내가 보안 - NSUserDefaults 라이브러리를 사용하는 것을 시도하고있다
이 기능은 충돌 내가 라이브러리 사용하여 정수를 해시하려고하면 스테핑 후
- (NSString *)_hashObject:(id)object
{
if (_secretData == nil)
{
// Use if statement in case asserts are disabled
NSAssert(NO, @"Provide a secret before using any secure writing or reading methods!");
return nil;
}
// Copy object to make sure it is immutable (thanks Stephen)
object = [object copy];
// Archive & hash
NSMutableData *archivedData = [[NSKeyedArchiver archivedDataWithRootObject:object] mutableCopy];
[archivedData appendData:_secretData];
if (_deviceIdentifierData != nil)
[archivedData appendData:_deviceIdentifierData];
NSString *hash = [self _hashData:archivedData];
return hash;
}
을 디버거를 통해 특히,이 선이 원인이라고 표시 :이 방법은 전무를 반환
NSMutableData *archivedData = [[NSKeyedArchiver archivedDataWithRootObject:object] mutableCopy];
및 (객체의 주소를 손상하는 B ecomes 0xffffffcc). 실제로 NSKeyedArchiver를 사용한 적이 없으므로 여기서 어떤 일이 일어나고 있는지 잘 모르겠습니다.
실제로 직접 정수를 NSNumber로 변환 한 다음 hashObject() 메서드에 전달합니다. 나는 [NSMutableData dataWithBytes : object length : malloc_size (object)]를 시도했지만 여전히 nil 반환 값을 얻었고 object도 nil이되었다. – jlanisdev
신경 쓰지 마라. 깨진 라이브러리를 사용하는 대신 해시를 직접 작성하는 것이 더 간단하다고 판단했다. – jlanisdev