mirror of
https://github.com/Instagram/IGListKit
synced 2026-05-14 04:49:05 +00:00
Summary: Got a little time on the plane to mess around with this idea. Very much want comments on this! Some questions: - We should probably compile out parts of this using `#if DEBUG`. - Should I compile out all of the description methods? - Maybe I wrap the entire debug files w/ `#if DEBUG ... #endif` so none of it is loaded? - ryanolsonk I used [FLEX](https://github.com/Flipboard/FLEX/blob/master/Classes/Utility/FLEXHeapEnumerator.m) for searching the heap, lmk if you see any problems w/ this - Its lifted w/ only a few changes for my specific needs (including comments 😂) - Chalk us up for using [another bit](https://github.com/Instagram/IGListKit/blob/master/Source/Internal/IGListAdapterProxy.m#L77-L82) of your code - Added a basic test so that the basics of this work and coverage doesn't tank - Anything else I should test? - Is there more data we should be dumping? - I have to track batch update state on the updater in order to dump it. If this seems dan Closes https://github.com/Instagram/IGListKit/pull/617 Reviewed By: jessesquires Differential Revision: D4929426 Pulled By: rnystrom fbshipit-source-id: fcba0d6f0b7766485440f208cf70ad39dfc7a42e
43 lines
2 KiB
Objective-C
43 lines
2 KiB
Objective-C
/**
|
|
* Copyright (c) 2016-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import "UICollectionView+DebugDescription.h"
|
|
|
|
@implementation UICollectionView (DebugDescription)
|
|
|
|
- (NSArray<NSString *> *)debugDescriptionLines; {
|
|
NSMutableArray *debug = [NSMutableArray new];
|
|
#if IGLK_DEBUG_DESCRIPTION_ENABLED
|
|
[debug addObject:[NSString stringWithFormat:@"Class: %@, instance: %p", NSStringFromClass(self.class), self]];
|
|
[debug addObject:[NSString stringWithFormat:@"Data source: %@", self.dataSource]];
|
|
[debug addObject:[NSString stringWithFormat:@"Delegate: %@", self.delegate]];
|
|
[debug addObject:[NSString stringWithFormat:@"Layout: %@", self.collectionViewLayout]];
|
|
[debug addObject:[NSString stringWithFormat:@"Frame: %@, bounds: %@",
|
|
NSStringFromCGRect(self.frame), NSStringFromCGRect(self.bounds)]];
|
|
|
|
const NSInteger sections = [self numberOfSections];
|
|
[debug addObject:[NSString stringWithFormat:@"Number of sections: %zi", sections]];
|
|
|
|
for (NSInteger section = 0; section < sections; section++) {
|
|
[debug addObject:[NSString stringWithFormat:@" %zi items in section %zi",
|
|
[self numberOfItemsInSection:section], section]];
|
|
}
|
|
|
|
[debug addObject:@"Visible cell details:"];
|
|
NSArray *visibleIndexPaths = [[self indexPathsForVisibleItems] sortedArrayUsingSelector:@selector(compare:)];
|
|
for (NSIndexPath *path in visibleIndexPaths) {
|
|
[debug addObject:[NSString stringWithFormat:@" Visible cell at section %zi, item %zi:",
|
|
path.section, path.item]];
|
|
[debug addObject:[NSString stringWithFormat:@" %@", [[self cellForItemAtIndexPath:path] description] ?: @""]];
|
|
}
|
|
#endif // #if IGLK_DEBUG_DESCRIPTION_ENABLED
|
|
return debug;
|
|
}
|
|
|
|
@end
|