Realm Blog

Realm Objective-C & Swift 0.97

Realm Objective-CおよびRealm Swift 0.97をリリースしました。

このバージョンにはtvOSの正式サポート、Carthageによるビルドのサポート、Objective-C APIのGenericsの改善、クエリとパフォーマンスの改善、非推奨APIの削除などが含まれます。

tvOS 📺

Apple TVアプリケーションでRealmを利用することができるようになりました!すでに何人かの開発者の方がここ数か月の間に開発ブランチのApple TV用ビルドを使用してRealmを使用したApple TV用アプリケーションを開発し、リリースしていますが、ようやく正式にリリースすることができました!🎉

tvOSではDocumentsディレクトリへの書き込みは禁止されているので、tvOS用のフレームワークでは、デフォルトの保存先はNSCachesDirectoryに変わっています。ただし、キャッシュディレクトリ内のファイルは常にシステムによって削除される可能性があるので注意してください。そのため、tvOSにおけるRealmの利用は、復元可能なデータのキャッシュなどに利用し、消えては困る重要な(再生成できない)ユーザーデータなどを保存するのは避けることを推奨いたします。

CarthageでソースコードからRealm Swiftをビルドできるようになりました

ビルドシステムの大幅は改善により、Realm Objective-CとRealm Swiftのプロジェクトが1つに統合されました。それにより、Realm Swiftフレームワークをソースコードから(ビルド済みバイナリを使わないオプションを使って)carthage --no-use-binariesビルドできるようになりました。

暗号化Realmのデバッグ

これまで、Realmの暗号化の仕組みはMach Signal Handlingに多くを依存していました。そのことがLLDBの動作に干渉していました。

このバージョンからシグナルハンドラをまったく使わない新しい仕組みで暗号化を再実装したので、暗号化を有効にしていてもLLDBセッションにプロセスをアタッチできるようになりました。さらに、暗号化が各種のクラッシュレポーター(CrashLyticsなど)の動作に干渉することがなくなりました。そして、Mach Signalが使えないwatchOSとtvOSの両プラットフォームで暗号化が利用できる目処がたちました。watchOSとtvOSの暗号化はまだ検証中なので利用できませんが、近い将来、可能になります。

Realm Objective-CにおけるGenerics型アノテーション

Objective-C APIの可能な限りすべての場所にGenerics型指定のアノテーションを付加しました。

非互換の変更

  • 以前のバージョンで非推奨となっていたメソッドが削除されました。
  • ランループを持たないスレッドでRealmのNotificationブロックを追加しようとすると、例外が発生するように変更されました。これまでは、ランループを持たないスレッドでNotificationブロックを追加すると、例外にはなりませんが、ブロックが呼ばれることはありませんでした。

細かな改善

  • -[RLMRealm transactionWithBlock:]Realm.write(_:)のブロック(クロージャ)引数に__attribute__((noescape))/@noescape属性がつきました。
  • Key-pathを使用したほとんどのクエリについて、左辺と右辺のどちらに対しても比較演算子が使用できるようになりました。
  • RLMResultsRLMArrayでKVCコレクション演算子が使えるようになりました。
  • Swiftにおいて、+[RLMRealm sharedSchema]内で計算済みプロパティを初期化しようとするとき、デッドロックを起こさずに失敗するようになりました。

不具合の修正

  • 関連を検索条件として取得したRLMResults-[RLMRealm deleteObjects:]に渡して削除するときのパフォーマンスを改善しました。
  • Realmに保存できないオブジェクト型のプロパティを定義しようとすると例外を投げるようになりました。

お読みいただきありがとうございます。 Realm で素晴らしいアプリケーションを作りましょう!Stack OverflowGitHubTwitterでお待ちしています。


Realm Team

At Realm, our mission is to help developers build better apps faster. We provide a unique set of tools and platform technologies designed to make it easy for developers to build apps with sophisticated, powerful features — things like realtime collaboration, augmented reality, live data synchronization, offline experiences, messaging, and more.

Everything we build is developed with an eye toward enabling developers for what we believe the mobile internet evolves into — an open network of billions of users and trillions of devices, and realtime interactivity across them all.

記事の更新情報を受け取る