Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a4b0b1c

Browse files
committed
Thread safety: use dispatch_once instead of checking a bool variable
1 parent f283e58 commit a4b0b1c

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

REValidation/REValidation.m

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ + (instancetype)sharedObject
4141
dispatch_once(&onceToken, ^{
4242
_sharedClient = [[REValidation alloc] init];
4343
});
44-
44+
4545
return _sharedClient;
4646
}
4747

@@ -52,28 +52,26 @@ + (void)registerValidator:(Class)validatorClass
5252

5353
+ (void)registerDefaultValidators
5454
{
55-
static BOOL registeredValidators;
56-
if (!registeredValidators) {
55+
static dispatch_once_t onceToken;
56+
dispatch_once(&onceToken, ^{
5757
[REValidation registerValidator:[REPresenceValidator class]];
5858
[REValidation registerValidator:[RELengthValidator class]];
5959
[REValidation registerValidator:[REEmailValidator class]];
60-
registeredValidators = YES;
61-
}
60+
});
6261
}
6362

6463
+ (void)registerDefaultErrorMessages
6564
{
66-
static BOOL registeredMessages;
67-
if (!registeredMessages) {
65+
static dispatch_once_t onceToken;
66+
dispatch_once(&onceToken, ^{
6867
NSDictionary *messages = @{
6968
@"com.REValidation.presence": @"%@ can't be blank.",
7069
@"com.REValidation.minimumLength": @"%@ is too short (minimum is %i characters).",
7170
@"com.REValidation.maximumLength": @"%@ is too long (maximum is %i characters).",
7271
@"com.REValidation.email": @"%@ is not a valid email.",
7372
};
7473
[REValidation sharedObject].errorMessages = [NSMutableDictionary dictionaryWithDictionary:messages];
75-
registeredMessages = YES;
76-
}
74+
});
7775
}
7876

7977
+ (NSString *)errorMessageForDomain:(NSString *)domain
@@ -111,7 +109,7 @@ + (NSError *)validateObject:(NSObject *)object name:(NSString *)name validator:(
111109
+ (NSArray *)validateObject:(NSObject *)object name:(NSString *)name validators:(NSArray *)validators
112110
{
113111
NSMutableArray *errors = [NSMutableArray array];
114-
112+
115113
for (id validator in validators) {
116114
NSError *error;
117115
if ([validator isKindOfClass:[NSString class]]) {
@@ -127,7 +125,7 @@ + (NSArray *)validateObject:(NSObject *)object name:(NSString *)name validators:
127125
if (error)
128126
[errors addObject:error];
129127
}
130-
128+
131129
return errors;
132130
}
133131

@@ -137,9 +135,9 @@ - (id)init
137135
self = [super init];
138136
if (!self)
139137
return nil;
140-
138+
141139
self.registeredValidators = [[NSMutableDictionary alloc] init];
142-
140+
143141
return self;
144142
}
145143

0 commit comments

Comments
 (0)