conversations.from: human
conversations.value: Give me a description for a book titled Pro iOS Table Views and Collection Views about Objective-C, Ruby, Rails with the genre: Computers & Technology, Programming.. End with the sentence 'net, and on places including Twitter and GitHub as timd.'.
conversations.from: assistant
conversations.value: the author designs and builds software with tools such as Objective-C and Ruby on Rails. Having been online since the early 1990s, he s worked with all kinds of clients in all kinds of sectors. Along the way he picked up an MBA and is a certified project manager, but asks that you don t hold those against him. He lives in Sheffield in the UK with his family and far too many pets. In his spare time, he walks the dog, enjoys single malts, takes photos, and dismantles gadgets. You can find him online at http://adoptioncurve.net, and on places including Twitter and GitHub as timd.
conversations.from: human
conversations.value: Give me the first five paragraphs for this book.. Start with the sentence 'Pro iOS Table Views and Collection Views
  With the introduction of Swift in 2014, Apple have taken all the very best parts of a myriad of programming languages and paradigms available, and combined them with their legendary frameworks and APIs to produce something that completely lives up to the superlatives used to describe it'.
conversations.from: assistant
conversations.value: Pro iOS Table Views and Collection Views
  With the introduction of Swift in 2014, Apple have taken all the very best parts of a myriad of programming languages and paradigms available, and combined them with their legendary frameworks and APIs to produce something that completely lives up to the superlatives used to describe it. The open-sourcing of Swift at the end of 2015 will make for some very interesting developments in the months and years to come.
  You can download the source code for each chapter's examples from the Apress site ( www.apress.com/9781484212431 ) or from GitHub at https://github.com/timd/ProiOSTableCollectionViews.
  Although that's the quickest way to get up and running, I encourage you to take the extra time to key in the code yourself as you go along. With Xcode's code completion, it doesn't take that long, and code that has flowed through your eyes and brain, and then out to your fingers, is much more likely to sink in and make sense.
  Finally, if you've battled with—and resolved—some gnarly issue, then post about it yourself, whether that's on your own blog or a site like Stack Overflow. Even if the topic has been covered numerous times before, there's always room for another take on a problem. Your unique point of view could be just what someone else needs.
  Tim Duckett can be found online at http://adoptioncurve.net and on places like Twitter and GitHub as @timd.
conversations.from: human
conversations.value: Give me five more paragraphs.
conversations.from: assistant
conversations.value: Building cells is expensive in processing terms, so the UITableView and UICollectionView classes provide caching and dequeuing functionality to allow constructed cells to be reused. This can make a dramatic difference if you've got more rows than can fit on the screen.
  The two places to check are the tableView:cellForRowAtIndexPath: or collectionView:cellForItemAtIndexPath:methods. For maximum efficiency, you should be doing one of three things:
  The only exceptions to the first rule are if you're dealing with a static table or if you'll never have more cells than will fit into the visible area.
  Behind the scenes, UITableView uses the cell height to build a number of elements relating to the "chrome" of the table. When all cells in the tableView are the same height, this can be done relatively cheaply, but if the cell height varies, these calculations get repeated every time a new cell is created.
  To extract the last ounce of speed from a table view, it's most efficient to keep the cell heights identical. Whether this is possible is going to vary from project to project, of course, but if your cell heights only vary within a limited range, you may find you're better off designing them with a single consistent height and managing the differences within the internal cell layout.
conversations.from: human
conversations.value: Add another sentence about cached.
conversations.from: assistant
conversations.value: Building cells is expensive in processing terms, so the UITableView and UICollectionView classes provide caching and dequeuing functionality to allow constructed cells to be reused. This can make a dramatic difference if you've got more rows than can fit on the screen. 
  The two places to check are the tableView:cellForRowAtIndexPath: or collectionView:cellForItemAtIndexPath:methods. For maximum efficiency, you should be doing one of three things:
  The only exceptions to the first rule are if you're dealing with a static table or if you'll never have more cells than will fit into the visible area. In the later situation you can probably get away without cached cells because they'll always remain visible. 
  Behind the scenes, UITableView uses the cell height to build a number of elements relating to the "chrome" of the table. When all cells in the tableView are the same height, this can be done relatively cheaply, but if the cell height varies, these calculations get repeated every time a new cell is created. 
  To extract the last ounce of speed from a table view, it's most efficient to keep the cell heights identical. Whether this is possible is going to vary from project to project, of course, but if your cell heights only vary within a limited range, you may find you're better off designing them with a single consistent height and managing the differences within the internal cell layout.
conversations.from: human
conversations.value: Give me the last four paragraphs.
conversations.from: assistant
conversations.value: It's difficult to show the effect of animations on the printed page or static screen, but if you run the project now, you'll see that the items appear with a smooth animation and a very satisfying bounce effect.
  Gestures and animations can be used to bring your collection views to life, both deepening the interactions available and enhancing the user experienced with animations.
  By creating gesture recognizers that capture user input, it's possible to interactively update collection views by manipulating layout attributes. This provides the possibility for interfaces that allow users to interact directly with data and controls.
  By adding animation effects to insertion and deletions, the user experience delivered by your collection views can be enhanced. This can also be used as a tool to emphasize information and interaction possibilities. The powerful iOS animation APIs allow you to create fluid and engaging interfaces with ease.