{"id":871,"url":"https://github.com/diwu/DWURecyclingAlert","last_synced_at":"2025-07-30T19:32:33.255Z","repository":{"id":33719287,"uuid":"37373190","full_name":"diwu/DWURecyclingAlert","owner":"diwu","description":"Optimizing UITableViewCell For Fast Scrolling","archived":false,"fork":false,"pushed_at":"2017-04-18T02:10:32.000Z","size":259,"stargazers_count":559,"open_issues_count":1,"forks_count":38,"subscribers_count":21,"default_branch":"master","last_synced_at":"2024-11-24T05:04:00.156Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diwu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-13T13:50:55.000Z","updated_at":"2024-10-17T02:34:37.000Z","dependencies_parsed_at":"2022-08-28T18:53:17.724Z","dependency_job_id":null,"html_url":"https://github.com/diwu/DWURecyclingAlert","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diwu%2FDWURecyclingAlert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diwu%2FDWURecyclingAlert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diwu%2FDWURecyclingAlert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diwu%2FDWURecyclingAlert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diwu","download_url":"https://codeload.github.com/diwu/DWURecyclingAlert/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228178896,"owners_count":17881105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:15:33.481Z","updated_at":"2024-12-04T19:32:01.940Z","avatar_url":"https://github.com/diwu.png","language":"Objective-C","funding_links":[],"categories":["Code Quality","Tools"],"sub_categories":["Other free courses","Getting Started"],"readme":"![][demo]\n\n# DWURecyclingAlert\n\u003e Your code usually has less than ten milliseconds to run before it causes a frame drop.\u003csup\u003e[1](#myfootnote1)\u003c/sup\u003e\n\u003e\n\n[![Build Status](https://travis-ci.org/diwu/DWURecyclingAlert.svg?branch=master)](https://travis-ci.org/diwu/DWURecyclingAlert)\n[![](https://img.shields.io/badge/license-MIT-blue.svg)][license]\n[![](https://img.shields.io/badge/swift-compatible-orange.svg)][project]\n\n# Visualize Bad Drawings On The Fly\n\nInjects 4 classes:\n \n * `UITableViewCell`\n * `UICollectionViewCell`\n * `UITableViewHeaderFooterView`\n * `UICollectionReusableView` (as footers/headers)\n \nMonitors 6 time sensitive API calls:\n\n * `[UIView drawRect:]`\n * `tableView:cellForRowAtIndexPath:`\n * `tableView:viewForHeaderInSection:`\n * `tableView:viewForFooterInSection:`\n * `collectionView:cellForItemAtIndexPath:`\n * `collectionView:viewForSupplementaryElementOfKind:atIndexPath:`\n\nVisualizes bad drawing code in 2 ways:\n\n* Displays non-recycled UIView, CALayer and UIImage objects with bold red bolders.\n* Displays the time it takes to complete each time sensitive API calls, in milliseconds.\n\n# Usage\nStep 1: Drop [DWURecyclingAlert.m][code] into your project, Swift or ObjC.\n\nStep 2: There's no step 2. \n\n(Optionally) Using CocoaPods and manually start the injection:\n\n`pod 'DWURecyclingAlert'` \n\nThen manually start injection by running the following function anywhere in your project:\n\n`void Inject_DWURecyclingAlert();`\n\n# UI Configuration\nIt's likely that your project happens to use lots of `[UIColor redColor]` here and there. Or, maybe you want to localize the millisecond warning string with your team's first language. Take a look at the [UI Configuration][code_line_39] section and customize them the way you like.\n# How It Works\nMethod swizzling and associated objects. You could always read the [source][code].\n\n# Disabled in Release By Default\n[DWURecyclingAlert.m][code] requires the DEBUG macro to compile and run. As a result, it's disabled in Release by default. If you also want to disable it in debug builds, comment out the [DWURecyclingAlertEnabled][code_line_23] macro at the top of the file.\n# Misc\n* Whether your cell / header / footer are created by code or by nib/storyboard, [DWURecyclingAlert.m][code] has a way to scan it.\n* It's perfectly normal for a cell to have multiple subviews that override `drawRect:`, if that's the case, [DWURecyclingAlert.m][code] will calculate the sum for all the time it takes to go through each `drawRect:` call.\n* [DWURecyclingAlert.m][code] requires iOS 6 or higher to compile.\n\n# Example Project\nInside this repo you can find the RecyclingAlert example project. \n# License\nDWURecyclingAlert is released under the MIT license. See [LICENSE][license] for details.\n\n[code]: ./RecyclingAlert/DWURecyclingAlert/DWURecyclingAlert.m\n[code_line_23]: ./RecyclingAlert/DWURecyclingAlert/DWURecyclingAlert.m#L23\n[code_line_39]: ./RecyclingAlert/DWURecyclingAlert/DWURecyclingAlert.m#L39\n[project]: https://github.com/diwu/DWURecyclingAlert\n[demo]: https://raw.githubusercontent.com/diwu/ui-markdown-store/master/demo_11.png\n[license]: ./LICENSE\n\u003ca name=\"myfootnote1\"\u003e1\u003c/a\u003e: Facebook AsyncDisplayKit Guide. (http://asyncdisplaykit.org/guide)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiwu%2FDWURecyclingAlert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiwu%2FDWURecyclingAlert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiwu%2FDWURecyclingAlert/lists"}