이 행은 3 초 후에 선택기 secondMethod를 호출합니다.
[self performSelector:@selector(secondMethod) withObject:nil afterDelay:3.0 ];
원하는 지연으로 두 번째 작업에 사용하십시오. 코드가 많은 경우 자체 메서드에 배치하고 performSelector:
. UI를 차단하지 않습니다.sleep
편집 : 두 번째 방법을 원하지 않는 경우 performSelector에서 블록을 사용할 수 있도록 카테고리를 추가 할 수 있습니다.
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [block copy];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block
{
block();
}
@end
또는 더 깔끔하게 :
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
dispatch_get_current_queue(), block);
}