Realm Blog

Realm Objective-C & Swift 0.97

해당 버전이 Swift 1.2 버전에 대한 마지막 Realm Swift 지원입니다.

Realm Objective-CRealm Swift 0.97.0을 출시했습니다.

이번 버전에서는 공식적인 tvOS 지원, 더 나은 Carthage 지원, 더 많아진 Object-C API 제네릭, 성능 & 쿼리 개선, deprecation API 삭제 등을 포함하고 있습니다.

tvOS 📺

드디어 Apple TV를 위한 Realm 앱을 빌드할 수 있게 되었습니다! 비록 몇몇 발 빠른 사용자들은 이미 Realm의 비공식적인 Apple TV development 브랜치을 이용하여 몇달 전부터 앱을 만들어 오긴 하였지만 이제는 저희가 공식적으로 지원하는 플랫폼이 되었습니다! 🎉

tvOS에서는 Documents 디렉토리에 쓰기를 하는 것을 허용하지 않기 때문에 기본 Realm 경로(default Realm path)가 NSCachesDirectory로 되어 있습니다. 하지만, tvOS가 언제든지 캐쉬 디렉토리의 파일들을 삭제할 수도 있다는 것을 유념하시길 바랍니다. 그렇기 때문에 중요한 유저 데이터를 직접 저장하는 것보다 Realm을 사용하기를 권장드립니다.

Carthage를 이용한, 소스코드로 Realm Swift 빌드하기

저희는 Realm Objective-C와 Real Swift 모두를 한 Xcode project에서 사용할 수 있게 만들기 위해 빌드 시스템을 매우 단순화 시켰습니다. 이를 통해 이제 Realm Swift에서 carthage --no-use-binaries를 이용하여 빌드할 수 있게 되었습니다.

암호화된 Realms 디버깅하기

지금까지 Realm의 네이티브 암호 기능의 동작 방식은 Mach exception handling에 크게 의존해 왔었고 그로 인해 LLDB의 사용을 힘들게 만들었습니다.

저희 Realm은 이제 더 이상 Mach exception을 사용하지 않기 위해 새롭게 암호화 기능을 구현하였습니다. 그 결과, 암호화된 Realm을 LLDB를 이용하여 디버깅 할 수 있게 되었습니다. 또한 암호화 작업 때문에 crash 리포트가 발생하는 일이 없어졌습니다. 마지막으로, Mach exceptions을 제거함으로써, tvOS & watchOS (Mach API 사용이 불가능한)와 같은 플랫폼들에서도 이제 암호화를 사용할 수 있게 되었습니다! 하지만 저희가 watchOS & tvOS의 추후 테스트를 위해 아직 활성화 시키지는 않았습니다.

Realm Objective-C에서의 제네릭 타입 Annotation

왜 Swift만 재밌게 놔두나요? Objective-C에서도 어디서든 제네릭 타입 annotation을 사용할 수 있게 저희 Realm Objective-C API를 업데이트 하였습니다.

호환성 주의사항

  • 이전 릴리즈에서 deprecated된 API들이 완전히 제거 되었습니다.
  • 실행되고 있는 loop에서 현재 동작하는 않는 쓰레드에 Realm notification block을 추가하게 되면 가만히 있는 것이 아니라 exception이 발생하게 됩니다.

작은 개선 (Minor Enhancements)

  • -[RLMRealm transactionWithBlock:]/Realm.write(_:)의 block 파라미터는 이제 __attribute__((noescape))/@noescape로 표시됩니다.
  • 비교 연산자 양쪽에서 key path를 가진 퀴리의 많은 형태가 이제 지원됩니다.
  • RLMResultsRLMArray에서 KVC collection 연산자 지원이 추가되었습니다.
  • Swift property가 계산된 값(computed value)으로 초기화 되었다면 +[RLMRealm sharedSchema]에서 데드락에 걸리지 않고 실파합니다. 이것은 스스로 Realm을 열도록 시도합니다.

버그 수정

  • 삭제된 객체들의 타입에 연결된 다른 클래스들이 있을때, 객체들을 필터한 RLMResults에서 -[RLMRealm deleteObjects:]를 호출 할때의 낮은 성능을 수정하였습니다.
  • 지원되지 않는 타입에서 Object properties를 정의했을 때 exception이 발생하게 됩니다.

읽어 주셔서 감사합니다. 지금 당장 Realm으로 놀라운 앱을 만들어보세요! 항상 우리는 주변인 Stack Overflow, GitHub, 또는 Facebook Realm 사용자 그룹에 있습니다.


Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

이런 개발 뉴스를 더 만나보세요