Git Product home page Git Product logo

Comments (3)

ashfurrow avatar ashfurrow commented on April 29, 2024

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.

andrewsardone avatar andrewsardone commented on April 29, 2024

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.

andrask avatar andrask commented on April 29, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.