Objective-C 타이머

2372 단어 Objective-C
1. 타이머의 생성 NSTimer* timer = [NSTimer scheduledTimerWithTime Interval:0.1 target:self selector:@selector(timerAction:)userInfo:str repeats:YES];이 방법의 역할: (1) 타이머 대상 만들기 (2) 타이머 작업의 매개 변수 의미: scheduledTimerWithTimeInterval: 타이머 방법을 실행하는 시간 간격 target: 어떤 실례 대상에게 이 방법을 실행하려면selector: SEL로 봉인된 타이머 방법userInfo: 타이머 방법에 전달된 매개 변수, 타이머 방법에서timer를 통과합니다.userInfo에서 이 매개변수를 가져옵니다.repeats: 중복 실행 여부 2.타이머 방법(타이머가 반복적으로 실행되는 방법): 타이머 방법은 파라미터를 가지고 있을 수도 있고 가지고 있지 않을 수도 있다.매개변수가 있는 경우 매개변수 유형은 NSTimer* 유형이어야 합니다.
3. runLoop의 역할:
(1)runLoop은 이벤트 순환입니다. 입력한 이벤트에 응답하는 이벤트 처리 프로그램을 실행하기 위해 라인에 들어가서 사용합니다.
(2)while(1)에 비해 NSRunLoop은 더욱 뛰어난 메시지 처리 모델로 메시지 처리 과정을 더욱 추상적이고 봉인했다.(3) 명령행 프로젝트에서 주 루틴의runLoop은 기본적으로 켜지지 않으며 수동으로 켜야 합니다.(4)runLoop은 여기서 간단하게 다음과 같이 이해한다. 스케줄링의 역할을 하고 일정 시간 간격으로 타이머 대상에게 타이머 방법을 실행하도록 통지한다.NSRunLoop*loop = [NSRunLoop currentRunLoop]에서 현재의runLoop, 단일 모드를 가져옵니다.[loop run];프로그램이 실행 상태에 있고 종료되지 않습니다.runLoop에 대해서는 다음을 참조하십시오.
http://blog.csdn.net/wzzvictory/article/details/9237973
다음 OC 언어로 간단한 타이머 프로젝트를 만듭니다.
요구: 10s의 카운트다운 프로그램을 설계하고 프로그램이 시작하여 타이머를 켜고 카운트다운이 끝나면 타이머를 닫습니다.
MyTimer.h
#import 

@interface MyTimer : NSObject
{
    // 
    NSInteger _index;
    NSTimer *_timer;
}

- (void)startMyTimer;
- (void)stopMyTimer;
- (void)timerAction:(NSTimer *)timer;
@end

MyTimer.m
#import "MyTimer.h"

@implementation MyTimer
- (instancetype)init
{
    if (self = [super init]) {
        _index = 10;
        [self startMyTimer];
    }
    return self;
}

- (void)startMyTimer
{
    _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:@"hello hyr." repeats:YES];
}

- (void)stopMyTimer
{
    [_timer invalidate];
    NSLog(@" ");
}

- (void)timerAction:(NSTimer *)timer
{
    _index--;
    NSLog(@"%li ",_index);
    NSLog(@"%@",timer.userInfo);
    if (_index == 0) {
        [self stopMyTimer];
    }
}
@end

main.m
#import 
#import "MyTimer.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyTimer *mytimer = [[MyTimer alloc] init];
        NSRunLoop *loop = [NSRunLoop currentRunLoop];
        [loop run];
    }
    return 0;
}

좋은 웹페이지 즐겨찾기