Notice
Recent Posts
Recent Comments
Link
투케이2K
308. (ios/objc) NSTimer 타이머 사용해 실시간 카운트 실시 - timer count 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : Objc
[소스 코드]
#import "ViewController.h"
// MARK: - [Private 변수 선언 영역]
@interface ViewController (){
NSTimer *timerRepeat; // [타이머 객체]
int timerCount; // [타이머 카운트]
}
@end
// MARK: - [몸체 (구현부) 동작 작성]
@implementation ViewController
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/
// MARK: - [뷰 로드 실시]
- (void)viewDidLoad {
[super viewDidLoad];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidLoad() :: 뷰 로드 실시] \n");
printf("=============================== \n");
printf("\n");
// MARK: [타이머 동작 수행 메소드 호출]
[self startTimer];
}
// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewWillAppear() :: 뷰 로드 완료] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidAppear() :: 뷰 화면 표시] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewWillDisappear() :: 뷰 정지 상태] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
printf("\n");
printf("=============================== \n");
printf("[ViewController >> viewDidDisappear() :: 뷰 종료 상태] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [타이머 시작 메소드 선언 실시]
- (void)startTimer {
printf("\n");
printf("=============================== \n");
printf("[ViewController >> startTimer() :: 타이머 시작 실시] \n");
printf("=============================== \n");
printf("\n");
// [사전 이미 타이머가 동작 중인 경우 종료 실시]
[self stopTimer];
// [사전 변수값 초기화 수행 실시]
timerCount = 1;
// [타이머 객체 생성 수행 실시 : 1초 마다 반복 수행 실시 : 타이머 동작 콜백 메소드 (timerCallback)]
timerRepeat = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(timerCallback:) userInfo:nil repeats:YES];
}
// MARK: - [타이머 실시간 동작 수행 부분]
-(void)timerCallback:(NSTimer*)timer {
printf("\n");
printf("=============================== \n");
printf("[ViewController >> timerCallback() :: 실시간 타이머 동작 수행] \n");
printf("[카운트 :: %d] \n", timerCount);
printf("=============================== \n");
printf("\n");
// [특정 카운트 값이 된 경우 타이머 종료 실시]
if (timerCount != nil && timerCount >= 5){
printf("\n");
printf("=============================== \n");
printf("[ViewController >> timerCallback() :: 실시간 타이머 동작 종료] \n");
printf("=============================== \n");
printf("\n");
// [타이머 종료 호출 실시]
[self stopTimer];
}
// [특정 로직 처리 실시]
// [타이머 카운트 값 증가 실시]
timerCount ++;
}
// MARK: - [타이머 종료 메소드 선언 실시]
- (void)stopTimer {
printf("\n");
printf("=============================== \n");
printf("[ViewController >> stopTimer() :: 타이머 종료 실시] \n");
printf("=============================== \n");
printf("\n");
// [사전 타이머 객체가 널이 아닌지 확인 후 종료]
if (timerRepeat != nil && [timerRepeat isValid]){ // [타이머가 널이 아니고 , 동작 중인 경우]
[timerRepeat invalidate]; // [타이머 동작 종료]
timerRepeat = nil; // [타이머 객체 널 만듦]
}
// [변수값 초기화 수행 실시]
timerCount = 1;
}
// -----------------------------------------
@end
// -----------------------------------------
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
310. (ios/objc) dispatch_semaphore_t 세마포어 사용해 프로그램 순차적 동기 로직 구현 (0) | 2022.11.21 |
---|---|
309. (ios/objc) completion block 사용해 콜백 (callback) 메소드 구현 (0) | 2022.11.21 |
307. (ios/swift) CGPoint, CGSize, CGRect 구분 차이점 및 예제 소스 코드 작성 (0) | 2022.11.20 |
306. (ios/swift) emoji string 이모지 문자열 데이터를 UIImage 이미지로 변경 수행 실시 (0) | 2022.11.20 |
305. (ios/xcode) KVO (Key Value Observing) 개념 설명 (0) | 2022.11.20 |
Comments