-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathNSThread+MCSMAdditions.m
More file actions
48 lines (37 loc) · 1.16 KB
/
NSThread+MCSMAdditions.m
File metadata and controls
48 lines (37 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//
// NSThread+MCSMAdditions.m
// MCSMFoundation
//
// Created by Spencer MacDonald on 06/07/2011.
// Copyright 2011 Square Bracket Software. All rights reserved.
//
#import "NSThread+MCSMAdditions.h"
@implementation NSThread (MCSMAdditions)
+ (void)MCSM_performBlockOnMainThread:(void (^)())block{
[[NSThread mainThread] MCSM_performBlock:block];
}
+ (void)MCSM_performBlockInBackground:(void (^)())block{
[NSThread performSelectorInBackground:@selector(MCSM_runBlock:)
withObject:[block copy]];
}
+ (void)MCSM_runBlock:(void (^)())block{
block();
}
- (void)MCSM_performBlock:(void (^)())block{
if ([[NSThread currentThread] isEqual:self])
block();
else
[self MCSM_performBlock:block waitUntilDone:NO];
}
- (void)MCSM_performBlock:(void (^)())block waitUntilDone:(BOOL)wait{
[NSThread performSelector:@selector(MCSM_runBlock:)
onThread:self
withObject:[block copy]
waitUntilDone:wait];
}
- (void)MCSM_performBlock:(void (^)())block afterDelay:(NSTimeInterval)delay{
[self performSelector:@selector(MCSM_performBlock:)
withObject:[block copy]
afterDelay:delay];
}
@end