Swiftの最近のブログ記事

本文はQiitaにあります。

本文はQiitaにあります。
Qiitaページへ

weak var delegate: DelegateProtocol?


これはよく見られる1つだけ登録可能なdelegateプロパティです。

対象のライフサイクルに干渉しない様、weak属性となっています。


複数登録可能なdelegateプロパティを実装する際、Array型を使うと上記と同じ仕様になりません。

Array型に要素を追加することにより、retain countが増加してしまい強参照となってしまう為です。


弱参照でありつつ複数登録可能なArray(Set)を作るには、NSHashTableを用います。


var delegateTable = NSHashTable.weakObjectsHashTable()


delegateTableに追加した要素は弱参照で登録され、参照先が解放された際自動的に要素は削除されます。


要素の追加は次の通りです。


delegateTable.addObject(ObjA())


NSHashTable内の要素はAnyObject型で管理される為、Array型と違いあらかじめ要素の型を指定することはできません。

登録されている各要素のdelegateメソッドを正しく実行する為には、次の手順を実行します。


for case let target as DelegateProtocol in self.delegateTable.allObjects {

target.sampleFunc()

}

先日公開したFirebaseにユーザフォロー関連の機能を追加するライブラリ


IF_FireabseFollowHelperKit


こちらがFirebaseSDK(3.2.0)に対応しました。


新しいFireabseAPIに合わせてインタフェースに変更がありますので、旧バージョンをお使いの方はご注意ください。

ドキュメントも新しいバージョンに対応しましたので、まずこちらをご覧ください。


導入時の注意

2016/05/23現在、FirebaseSDK(3.2.0)に対応した最新バージョンはCocoapodsに登録されておりません。

IF_FireabseFollowHelperKitからIF_FirebaseFollowHelper.swiftをダウンロードし、直接プロジェクトに追加してご利用ください。


Cocoapodsに登録後、改めて報告致します。

Firebaseを利用して、手軽にアプリにユーザフォロー関連の機能を追加できるライブラリを公開しました。


MITライセンスです。
IF_FirebaseFollowHelperを導入する事で、次の機能が実装されます。
 ・ユーザをフォローする
 ・ユーザをブロックする
 ・他ユーザに自分がフォローやブロックされた事をリアルタイムに受け取る

Firebase内のデータ処理についてはライブラリでカプセル化されているので、機能を利用する際にFirebaseのデータ構造について気にする必要はありません。
例えば自分がフォローしているユーザ一覧を受け取る場合、結果は [(uid, timestamp)] といった単純なArray返されます。

CocoaPodsからの導入も可能です。

詳細な仕様は次のドキュメントを参照してください。

導入方法やサンプルの動かし方などはgithubで説明していますので、そちらをご覧ください。