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を使用したほとんどのクエリについて、左辺と右辺のどちらに対しても比較演算子が使用できるようになりました。
-
RLMResults
とRLMArray
でKVCコレクション演算子が使えるようになりました。 - Swiftにおいて、
+[RLMRealm sharedSchema]
内で計算済みプロパティを初期化しようとするとき、デッドロックを起こさずに失敗するようになりました。
不具合の修正
- 関連を検索条件として取得した
RLMResults
を-[RLMRealm deleteObjects:]
に渡して削除するときのパフォーマンスを改善しました。 - Realmに保存できないオブジェクト型のプロパティを定義しようとすると例外を投げるようになりました。
お読みいただきありがとうございます。 Realm で素晴らしいアプリケーションを作りましょう!Stack Overflow、GitHub、Twitterでお待ちしています。