From 93bd10ced533d1b00546f3bbf55bdc8389c5721d Mon Sep 17 00:00:00 2001 From: Andreas Linde Date: Sun, 22 Jul 2012 21:42:28 +0200 Subject: [PATCH] Provide a delegate method to disable crash reporting instead of using a property --- Classes/BITCrashManager.h | 2 +- Classes/BITCrashManager.m | 14 +++++--------- Classes/BITCrashManagerDelegate.h | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/Classes/BITCrashManager.h b/Classes/BITCrashManager.h index 43acaedd40..98679c598d 100644 --- a/Classes/BITCrashManager.h +++ b/Classes/BITCrashManager.h @@ -95,7 +95,7 @@ typedef enum BITCrashStatus { NSFileManager *_fileManager; BOOL _crashIdenticalCurrentVersion; - BOOL _crashReportActivated; + BOOL _crashReportDisabled; NSMutableArray *_crashFiles; diff --git a/Classes/BITCrashManager.m b/Classes/BITCrashManager.m index fcd2a11f3b..b948a56cf1 100644 --- a/Classes/BITCrashManager.m +++ b/Classes/BITCrashManager.m @@ -99,16 +99,12 @@ _analyzerStarted = 0; } - testValue = nil; - testValue = [[NSUserDefaults standardUserDefaults] stringForKey:kBITCrashActivated]; - if (testValue) { - _crashReportActivated = [[NSUserDefaults standardUserDefaults] boolForKey:kBITCrashActivated]; - } else { - _crashReportActivated = YES; - [[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES] forKey:kBITCrashActivated]; + _crashReportDisabled = NO; + if (self.delegate != nil && [self.delegate respondsToSelector:@selector(shouldDisableCrashManager:)]) { + _crashReportDisabled = [self.delegate shouldDisableCrashManager:self]; } - if (_crashReportActivated) { + if (!_crashReportDisabled) { _crashFiles = [[NSMutableArray alloc] init]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); _crashesDir = [[NSString stringWithFormat:@"%@", [[paths objectAtIndex:0] stringByAppendingPathComponent:@"/crashes/"]] retain]; @@ -295,7 +291,7 @@ } - (BOOL)hasPendingCrashReport { - if (_crashReportActivated) { + if (!_crashReportDisabled) { if ([_crashFiles count] == 0 && [self.fileManager fileExistsAtPath:_crashesDir]) { NSString *file = nil; NSError *error = NULL; diff --git a/Classes/BITCrashManagerDelegate.h b/Classes/BITCrashManagerDelegate.h index 96f5dce131..8de889d824 100644 --- a/Classes/BITCrashManagerDelegate.h +++ b/Classes/BITCrashManagerDelegate.h @@ -37,6 +37,24 @@ @optional + +///----------------------------------------------------------------------------- +/// @name Configuration +///----------------------------------------------------------------------------- + +/** Return YES if you the crash reporting module should be disabled + + The crash reporting module is enabled by default. Implement this delegate and + return NO if you want to disable it. + + If you intend to implement a user setting to let them enable or disable + crash reporting, this delegate should be used to return that value. + + @param crashManager The `BITCrashManager` instance invoking this delegate + */ +- (BOOL)shouldDisableCrashManager:(BITCrashManager *)crashManager; + + ///----------------------------------------------------------------------------- /// @name Additional meta data ///-----------------------------------------------------------------------------