Comments (3)
The solution to the problem of the avatar download being kicked off as soon as the view model is initialized is solved by using the view model's active
property and setting it to YES
when the table view is about to display that cell (there's a UITableViewDelegate
method for that). You can then set it to NO
when the cell disappears, which could cancel the request. However, you'll be unable to use the rac_sendAsynchronousRequest:
method because it's not cancellable; abstract out the network logic into its own class using the NSURLConnectionDelegate
protocol. There are a few other opportunities to make your approach a little better, though.
You're not storing the image data anywhere, so it'll have to be re-downloaded every time a cell is displayed, which can get costly for the user's data plan. You should at least be caching them by url in a static NSCache
instance, but more ideally storing them in the Person
model. Second, UIImage
's initWithData:
method is expensive. I'd recommend this approach for decompressing on a background thread (note: simply using initWithData:
on a background thread will not actually decompress the JPEG). As it is now, you'll likely see dropped frames while scrolling the table view.
Best of luck, and let us know how it goes!
from reactiveviewmodel.
All good feedback, @ashfurrow – thanks! Using the active
property makes sense. I'll take a look at that and return if I have any other questions.
Thanks again!
from reactiveviewmodel.
FYI the same upgrade has beend done on FRP repo as I noticed the performance hit too (ashfurrow/FunctionalReactivePixels#27 & ashfurrow/FunctionalReactivePixels#30) Note that the performance hit may still be present as long as the code is compiled in debug mode.
from reactiveviewmodel.
Related Issues (20)
- didBecomeInactiveSignal should skip:1 HOT 2
- What about ViewModel based routing? HOT 1
- didBecomeInactiveSignal send value before viewDidLoad,is this right? HOT 1
- Feedback on MVVM-ification of an app HOT 3
- Why forwardSignalWhileActive:(RACSignal *)signal subscribes only on the next and error, but not completed? HOT 3
- Add Carthage compatibility badge to the README
- How to build it and use it? HOT 6
- forwardSignalWhileActive as signal operator HOT 1
- retain cycle when using didBecomeActiveSignal HOT 5
- Error Handling in ViewModel HOT 2
- code inside [self.didBecomeActiveSignal subscribeNext:^(id x) {}] not called. HOT 2
- I'd like to know how to setup a ReactiveViewModel with multiple Models? HOT 1
- Using forwardSignalWhileActive to fix KVO performance on iOS 9.
- run error HOT 1
- Old version in cocoapods HOT 5
- 你好 更新框架文件为啥老是报错了? HOT 3
- GitHub API request failed: NetworkError(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."
- new plan to use Swift rewrite this demo HOT 1
- can`t pod install 0.3.3
- compile errors using @keypath syntax
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reactiveviewmodel.