|
25 | 25 |
|
26 | 26 | static const char MJCachedPropertiesKey = '\0'; |
27 | 27 |
|
28 | | -dispatch_semaphore_t signalSemaphore; |
| 28 | +dispatch_semaphore_t mje_signalSemaphore; |
| 29 | +dispatch_once_t mje_onceTokenSemaphore; |
29 | 30 |
|
30 | 31 | @implementation NSObject (Property) |
31 | 32 |
|
32 | | -+ (void)load |
33 | | -{ |
34 | | - static dispatch_once_t onceToken; |
35 | | - dispatch_once(&onceToken, ^{ |
36 | | - signalSemaphore = dispatch_semaphore_create(1); |
37 | | - }); |
38 | | -} |
39 | | - |
40 | 33 | + (NSMutableDictionary *)mj_propertyDictForKey:(const void *)key |
41 | 34 | { |
42 | 35 | static NSMutableDictionary *replacedKeyFromPropertyNameDict; |
@@ -133,9 +126,10 @@ + (Class)mj_propertyObjectClassInArray:(NSString *)propertyName |
133 | 126 | + (void)mj_enumerateProperties:(MJPropertiesEnumeration)enumeration |
134 | 127 | { |
135 | 128 | // 获得成员变量 |
136 | | - MJ_LOCK(signalSemaphore); |
| 129 | + MJExtensionSemaphoreCreate |
| 130 | + MJ_LOCK(mje_signalSemaphore); |
137 | 131 | NSArray *cachedProperties = [self mj_properties]; |
138 | | - MJ_UNLOCK(signalSemaphore); |
| 132 | + MJ_UNLOCK(mje_signalSemaphore); |
139 | 133 | // 遍历成员变量 |
140 | 134 | BOOL stop = NO; |
141 | 135 | for (MJProperty *property in [cachedProperties copy]) { |
@@ -210,28 +204,31 @@ + (void)mj_setupObjectClassInArray:(MJObjectClassInArray)objectClassInArray |
210 | 204 | { |
211 | 205 | [self mj_setupBlockReturnValue:objectClassInArray key:&MJObjectClassInArrayKey]; |
212 | 206 |
|
213 | | - MJ_LOCK(signalSemaphore); |
| 207 | + MJExtensionSemaphoreCreate |
| 208 | + MJ_LOCK(mje_signalSemaphore); |
214 | 209 | [[self mj_propertyDictForKey:&MJCachedPropertiesKey] removeAllObjects]; |
215 | | - MJ_UNLOCK(signalSemaphore); |
| 210 | + MJ_UNLOCK(mje_signalSemaphore); |
216 | 211 | } |
217 | 212 |
|
218 | 213 | #pragma mark - key配置 |
219 | 214 | + (void)mj_setupReplacedKeyFromPropertyName:(MJReplacedKeyFromPropertyName)replacedKeyFromPropertyName |
220 | 215 | { |
221 | 216 | [self mj_setupBlockReturnValue:replacedKeyFromPropertyName key:&MJReplacedKeyFromPropertyNameKey]; |
222 | 217 |
|
223 | | - MJ_LOCK(signalSemaphore); |
| 218 | + MJExtensionSemaphoreCreate |
| 219 | + MJ_LOCK(mje_signalSemaphore); |
224 | 220 | [[self mj_propertyDictForKey:&MJCachedPropertiesKey] removeAllObjects]; |
225 | | - MJ_UNLOCK(signalSemaphore); |
| 221 | + MJ_UNLOCK(mje_signalSemaphore); |
226 | 222 | } |
227 | 223 |
|
228 | 224 | + (void)mj_setupReplacedKeyFromPropertyName121:(MJReplacedKeyFromPropertyName121)replacedKeyFromPropertyName121 |
229 | 225 | { |
230 | 226 | objc_setAssociatedObject(self, &MJReplacedKeyFromPropertyName121Key, replacedKeyFromPropertyName121, OBJC_ASSOCIATION_COPY_NONATOMIC); |
231 | 227 |
|
232 | | - MJ_LOCK(signalSemaphore); |
| 228 | + MJExtensionSemaphoreCreate |
| 229 | + MJ_LOCK(mje_signalSemaphore); |
233 | 230 | [[self mj_propertyDictForKey:&MJCachedPropertiesKey] removeAllObjects]; |
234 | | - MJ_UNLOCK(signalSemaphore); |
| 231 | + MJ_UNLOCK(mje_signalSemaphore); |
235 | 232 | } |
236 | 233 | @end |
237 | 234 | #pragma clang diagnostic pop |
0 commit comments