#DWURecyclingAlert
Your code usually has less than ten milliseconds to run before it causes a frame drop.1
#Visualize Bad Drawings On The Fly
Injects 4 classes:
UITableViewCell
UICollectionViewCell
UITableViewHeaderFooterView
UICollectionReusableView
(as footers/headers)
Monitors 6 time sensitive API calls:
[UIView drawRect:]
tableView:cellForRowAtIndexPath:
tableView:viewForHeaderInSection:
tableView:viewForFooterInSection:
collectionView:cellForItemAtIndexPath:
collectionView:viewForSupplementaryElementOfKind:atIndexPath:
Visualizes bad drawing code in 2 ways:
- Displays non-recycled UIView, CALayer and UIImage objects with bold red bolders.
- Displays the time it takes to complete each time sensitive API calls, in milliseconds.
#Usage Step 1: Drop DWURecyclingAlert.m into your project, Swift or ObjC.
Step 2: There's no step 2.
(Optionally) Using CocoaPods and manually start the injection:
pod 'DWURecyclingAlert'
Then manually start injection by running the following function anywhere in your project:
void Inject_DWURecyclingAlert();
#UI Configuration
It'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 section and customize them the way you like.
#How It Works
Method swizzling and associated objects. You could always read the source.
#Disabled in Release By Default DWURecyclingAlert.m 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 macro at the top of the file. #Misc
- Whether your cell / header / footer are created by code or by nib/storyboard, DWURecyclingAlert.m has a way to scan it.
- It's perfectly normal for a cell to have multiple subviews that override
drawRect:
, if that's the case, DWURecyclingAlert.m will calculate the sum for all the time it takes to go through eachdrawRect:
call. - DWURecyclingAlert.m requires iOS 6 or higher to compile.
#Example Project Inside this repo you can find the RecyclingAlert example project. #License DWURecyclingAlert is released under the MIT license. See LICENSE for details.
1: Facebook AsyncDisplayKit Guide. (http://asyncdisplaykit.org/guide)