aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/SPObjectAdditions.m144
1 files changed, 0 insertions, 144 deletions
diff --git a/Source/SPObjectAdditions.m b/Source/SPObjectAdditions.m
index ba53fc2d..bf8210ea 100644
--- a/Source/SPObjectAdditions.m
+++ b/Source/SPObjectAdditions.m
@@ -29,8 +29,6 @@
// More info at <https://github.com/sequelpro/sequelpro>
#import <objc/runtime.h>
-static NSMutableDictionary *gScrollViewListeners;
-static NSMutableDictionary *gScrollViewDealloc;
@implementation NSObject (SPObjectAdditions)
@@ -51,148 +49,6 @@ static NSMutableDictionary *gScrollViewDealloc;
return [list containsObject:self];
}
-- (void)_scrollViewDidChangeBounds:(id)obj
-{
- NSMutableString *msg = [NSMutableString string];
-
- [msg appendFormat:@"%s tripped!\n",__PRETTY_FUNCTION__];
-
- [msg appendFormat:@" at %@ (mach time: %lf)\n\n",[NSDate date],[NSDate monotonicTimeInterval]];
-
-retryDescribe:
- [msg appendFormat:@"passed object (class <%@>): %@\n\n",[obj className],obj];
-
- if ([obj isKindOfClass:[NSNotification class]]) {
- NSNotification *notif = (NSNotification *)obj;
- [msg appendFormat:@"unwrapping NSNotification named '%@' (userInfo=%@)\n\n",
- [notif name],
- [notif userInfo]];
- obj = [notif object];
- goto retryDescribe;
- }
-
- if([obj isKindOfClass:[NSView class]]) {
- [msg appendString:@"View hierarchy (parents):\n"];
- id parent = obj;
- while(parent) {
- [msg appendFormat:@"- %p (class <%@>): %@, id=%@, tag=%ld\n",
- parent,
- [parent className],
- parent,
- [(NSView *)parent identifier],
- [(NSView *)parent tag]];
- parent = [parent superview];
- }
- [msg appendString:@"\n"];
-
- [msg appendString:@"View hierarchy (own children): \n"];
- for (id child in [(NSView *)obj subviews]) {
- [msg appendFormat:@"- %p (class <%@>): %@, id=%@, tag=%ld\n",
- child,
- [child className],
- child,
- [(NSView *)child identifier],
- [(NSView *)child tag]];
- }
- [msg appendString:@"\n"];
- }
-
- if([obj respondsToSelector:@selector(window)]) {
- [msg appendFormat:@"In Window: %@\n\n",[obj window]];
- }
-
- [msg appendFormat:@"self: %p (class <%@>)\n\n",self,[self className]];
-
- NSString *key = [NSString stringWithFormat:@"snd=%p,obs=%p",obj,self];
-
- [msg appendFormat:@"registration info for pair (%@):\n %@\n\n",key,[gScrollViewListeners objectForKey:key]];
-
- NSString *deallocKey = [NSString stringWithFormat:@"=%p",self];
- [msg appendFormat:@"self %@ was originally dealloc'ed at:\n %@",deallocKey,[gScrollViewDealloc objectForKey:deallocKey]];
-
- @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:msg userInfo:nil];
-}
-
-@end
-
-
-@implementation NSNotificationCenter (SPScrollViewDebug)
-
-+ (void)load
-{
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- gScrollViewListeners = [[NSMutableDictionary alloc] init];
-
- Class notificationCenter = [self class];
-
- SEL orig = @selector(addObserver:selector:name:object:);
- SEL exch = @selector(sp_addObserver:selector:name:object:);
-
- Method origM = class_getInstanceMethod(notificationCenter, orig);
- Method exchM = class_getInstanceMethod(notificationCenter, exch);
-
- method_exchangeImplementations(origM, exchM);
- });
-
-}
-
-- (void)sp_addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender
-{
- if(notificationSelector == @selector(_scrollViewDidChangeBounds:) && [notificationName isEqualToString:NSViewBoundsDidChangeNotification]) {
- NSString *key = [NSString stringWithFormat:@"snd=%p,obs=%p",notificationSender,notificationObserver];
- NSMutableString *val = [NSMutableString string];
- [val appendFormat:@"at %@ (mach time: %lf)\n",[NSDate date],[NSDate monotonicTimeInterval]];
- [val appendFormat:@"observer: %1$p (class %2$@) description: %1$@\n",notificationObserver,[notificationObserver className]];
- if([notificationObserver isKindOfClass:[NSView class]]) {
- [val appendFormat:@" view info: id=%@, tag=%ld\n",[(NSView *)notificationObserver identifier], [(NSView *)notificationObserver tag]];
- }
- [val appendFormat:@"\nregistration backtrace:\n%@\n\n",[NSThread callStackSymbols]];
-
- [gScrollViewListeners setObject:val forKey:key];
- }
- // not recursive! method is swizzled.
- [self sp_addObserver:notificationObserver selector:notificationSelector name:notificationName object:notificationSender];
-}
-
-@end
-
-#import "SPTableView.h"
-
-@implementation SPTableView (SPScrollViewDebug)
-
-+ (void)load
-{
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- gScrollViewDealloc = [[NSMutableDictionary alloc] init];
-
- Class tableView = [self class];
-
- SEL orig = @selector(dealloc);
- SEL exch = @selector(sp_dealloc);
-
- Method origM = class_getInstanceMethod(tableView, orig);
- Method exchM = class_getInstanceMethod(tableView, exch);
-
- method_exchangeImplementations(origM, exchM);
- });
-}
-
-- (void)sp_dealloc
-{
- NSString *key = [NSString stringWithFormat:@"=%p",self];
- NSString *val = [NSString stringWithFormat:@"\n%p dealloc\n at %@ (mach time: %lf)\n backtrace:\n%@\n\n",self,[NSDate date],[NSDate monotonicTimeInterval],[NSThread callStackSymbols]];
-
- [gScrollViewDealloc setObject:val forKey:key];
-
- // not recursive! method is swizzled.
- [self sp_dealloc];
-}
-
-
@end
#pragma mark -