ReactiveCocoaのまとめ資料


[Cocoaの日々情報局](http://cocoadays-info.blogspot.jp/2013/02/function-reactive-programming-framework.html)でも紹介された、[ReactiveCocoa](https://github.com/ReactiveCocoa/ReactiveCocoa)。

解説記事やサンプルコード、GithubでのIssueに対するコメントや、Stack Overflowでの作者自らの回答などをまとめています。

## 解説、サンプルコード

- [ReactiveCocoa : NSHipster](http://nshipster.com/reactivecocoa/)
- [Objective-CのFunctional Reactive ProgrammingフレームワークReactiveCocoaを試してみる | CAPH TECH](http://tech.caph.jp/2013/03/12/try-reactivecocoa/)
- [Cocoa Samurai: Basic MVVM with ReactiveCocoa](http://cocoasamurai.blogspot.jp/2013/03/basic-mvvm-with-reactivecocoa.html)
- [clever/you - thoughts about mobile • ReactiveCocoa: First Impressions](http://cleveryou.net/post/22447309056/rac-first-impressions)

## 実際のアプリでの利用例

- [Brightcove iOS SDK Developer Documentation](http://docs.brightcove.com/en/video-cloud/brightcove-player-sdk-for-ios/)
- [How I Wrote Vinylogue for iOS with ReactiveCocoa - twocentstudios](http://twocentstudios.com/blog/2013/04/03/the-making-of-vinylogue/)

## Libraries using ReactiveCocoa

- [apparentsoft/ReactiveCoreData](https://github.com/apparentsoft/ReactiveCoreData)
- [MattCBowman/ReactiveCoreBluetooth](https://github.com/MattCBowman/ReactiveCoreBluetooth)
- [CodaFi/AFNetworking-RACExtensions](https://github.com/CodaFi/AFNetworking-RACExtensions)
- [stefanomondino/SMReactiveRestKit](https://github.com/stefanomondino/SMReactiveRestKit)
- [kastiglione/Parse-RACExtensions](https://github.com/kastiglione/Parse-RACExtensions)
- [rizumita/Reactive-Evernote-SDK-iOS](https://github.com/rizumita/Reactive-Evernote-SDK-iOS/)
- [brightcove/brightcove-player-sdk-ios](https://github.com/brightcove/brightcove-player-sdk-ios)
- [instructure/CanvasKit](https://github.com/instructure/CanvasKit)

## Slides

- [MVVM in iOS // Speaker Deck](https://speakerdeck.com/lebedev/mvvm-in-ios)
- [Reactive Cocoa Lightning Talk](http://www.slideshare.net/MRobertSpryn/reactive-cocoa-lightning-talk)
  - https://github.com/ReactiveCocoa/ReactiveCocoa/issues/940#issuecomment-28640830
- https://www.dropbox.com/s/wqhmf7iful182zq/ReactiveCocoa.key
  - https://github.com/ReactiveCocoa/ReactiveCocoa/issues/940#issuecomment-28444717
- https://dl.dropboxusercontent.com/u/1137362/ReactiveCocoaPublic.key
  - https://github.com/ReactiveCocoa/ReactiveCocoa/issues/940#issuecomment-28455164
- [ReactiveCocoa NSSpain // Speaker Deck](https://speakerdeck.com/robb/reactivecocoa-nsspain)
- [ReactiveCocoa at MobiDevDay 2013 // Speaker Deck](https://speakerdeck.com/andrewsardone/reactivecocoa-at-mobidevday-2013)
- [ReactiveCocoa // Speaker Deck](https://speakerdeck.com/robb/reactivecocoa)
- [Better Code for a Better World // Speaker Deck](https://speakerdeck.com/joshaber/better-code-for-a-better-world)
- [kastiglione/ExpressiveReactiveCocoa](https://github.com/kastiglione/ExpressiveReactiveCocoa)

## Videos
- [An Introduction to ReactiveCocoa: A Big Nerd Ranch Tech Talk](http://vimeo.com/78749139)

## Repos

- [jspahrsummers/GroceryList](https://github.com/jspahrsummers/GroceryList)
- [AshFurrow/C-41](https://github.com/AshFurrow/C-41)
- [AshFurrow/FunctionalReactivePixels](https://github.com/AshFurrow/FunctionalReactivePixels)
- [ReactiveCocoa/AnyWall](https://github.com/ReactiveCocoa/AnyWall)
- [seanhess/wizardwar](https://github.com/seanhess/wizardwar)
- [garnett/MVVMExample](https://github.com/garnett/MVVMExample)
- [andrewsardone/RACMobiDevDay](https://github.com/andrewsardone/RACMobiDevDay)
- [twocentstudios/vinylogue](https://github.com/twocentstudios/vinylogue)
- [Machx/MVVM-IOS-Example](https://github.com/Machx/MVVM-IOS-Example)
- [prabirshrestha/reactive-cocoa-playground](https://github.com/prabirshrestha/reactive-cocoa-playground)
- [joshaber/RACSignupDemo](https://github.com/joshaber/RACSignupDemo)
- [nicnocquee/RACExperiment](https://github.com/nicnocquee/RACExperiment)
- [rizumita/ReactiveSample](https://github.com/rizumita/ReactiveSample)
- [dmitrym0/ReactiveCocoaRecipes](https://github.com/dmitrym0/ReactiveCocoaRecipes)
- [lawrencelomax/ReactiveDemo](https://github.com/lawrencelomax/ReactiveDemo)

## GitHub Issues

- [How would you create an editable UITableView in ReactiveCocoa way?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/902)
- [Implement "-takeUntilAndThenOneMore:" using existing operations?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/892)
- [Delay between -repeat and -retry attempts](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/882)
- [MVVM guidance](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/851)
- [MVVM real world example](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/847)
- [Best design pattern for starting only one async operation and share signal result](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/828)
- [Feedback loop?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/827)
- [Implementing -windowWithStart:close: using current operations?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/811)
- [Sequencing with async network requests with DRY code](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/786)
- [Batched API responses](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/785)
- [Triggering reloadData on a tableview when a signal fires via rac_liftSelector:withSignals:](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/772)
- [Intercept error in OAuth flow](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/768)
- [Command which sends alternating YES/NO values](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/767)
- [How to obtain KVO old value using ReactiveCocoa 2.0 API?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/762)
  - [逆引きReactiveCocoa: シグナルの現在の値だけでなく、直前の値にアクセスする](http://ikesyo.hatenablog.com/entry/2013/12/04/150325)
- [oneOf: operator to merge differently typed signals](https://github.com/ReactiveCocoa/ReactiveCocoa/pull/756)
- [How to do feeds with AFNetworking and ReactiveCocoa?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/730)
- [How to fetch network resource every sec avoiding congestion?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/698)
- [Best practice for signals that capture completed/error operations](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/653)
  - [逆引きReactiveCocoa: 副作用だけのシグナルをリフティング／バインディングに使用する](http://ikesyo.hatenablog.com/entry/2013/12/04/140710)
- [Managing interdependence between two RACCommand's canExecute properties.](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/621)
- [Using signals to update UI after creating a remote resource](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/598)
- [Most RAC-ish idiom for this?](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/469#issuecomment-17490308)
- [Creating a simple timer replacement](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/381#issuecomment-15010713)
- [Confusion about sequencing async signals...](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/340#issuecomment-13909165)
- [Better pattern for this code snippet](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/292)

## Stack Overflow

- [Splitting an RACSignal to eliminate state](http://stackoverflow.com/questions/18852844/splitting-an-racsignal-to-eliminate-state)
- [Dependency Inversion / Injection? - Networking code in model classes - Code Review Stack Exchange](http://codereview.stackexchange.com/questions/19307/dependency-inversion-injection-networking-code-in-model-classes/19372#19372)
- [How to using ReactiveCocoa to transparently authenticate before making API calls?](http://stackoverflow.com/questions/14066651/how-to-using-reactivecocoa-to-transparently-authenticate-before-making-api-calls/14072445#14072445)
- [Stop publishing when there are no subscribers and auto start when there are subscribers](http://stackoverflow.com/questions/14769185/stop-publishing-when-there-are-no-subscribers-and-auto-start-when-there-are-subs/)
- [When to use RACReplaySubject vs. RACMulticastConnection?](http://stackoverflow.com/questions/15075075/when-to-use-racreplaysubject-vs-racmulticastconnection/15319251)
- [How do I create a ReactiveCocoa subscriber that recieves a signal only once, then unsubscribes/releases itself?](http://stackoverflow.com/questions/15615232/how-do-i-create-a-reactivecocoa-subscriber-that-recieves-a-signal-only-once-the)
- [Chaining dependent signals in ReactiveCocoa](http://stackoverflow.com/questions/15797081/chaining-dependent-signals-in-reactivecocoa/15827396)
- [How do I get the "old value" from a ReactiveCocoa signal?](http://stackoverflow.com/questions/16070562/how-do-i-get-the-old-value-from-a-reactivecocoa-signal/16106846#16106846)
- [Perform action on the hour, every hour, with ReactiveCocoa](http://stackoverflow.com/questions/16523571/perform-action-on-the-hour-every-hour-with-reactivecocoa/16535857#16535857)
- [How to conditionally buffer RACSignal values?](http://stackoverflow.com/questions/19525160/how-to-conditionally-buffer-racsignal-values/19552152#19552152)
- [Remove a ReactiveCocoa signal from a control](http://stackoverflow.com/questions/19650802/remove-a-reactivecocoa-signal-from-a-control/19673276#19673276)