이것은 아마도 지금까지 알아야 할 것이므로 NSTimer 클래스 메소드를 사용하여 NSTimer의 인스턴스를 생성하고 있습니다. 나는 꽤 반환 된 객체가 autoreleased라고 확신한다. 내 질문은 타이머 객체 (메소드 : 1)를 유지하고 해제해야하거나 간단히 @property에 직접 할당해야한다. (방법 : 2) (전혀 다른 일을해야합니까?)클래스 메서드로 생성 된 개체를 유지 하시겠습니까?
// METHOD: 1
@property (nonatomic, retain) NSTimer *myTimer;
.
NSTimer *tempTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
[self setMyTimer:tempTimer];
//[tempTimer release];
.
- (void)dealloc {
[pulseTimer release];
[super dealloc];
}
하거나 :
이// METHOD: 2
myTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
편집 : 난 그냥 쓰는 경우
마지막 요점, 속성에 할당하지 않고 (아래 참조)는 타이머가가는 것을 어떤 기회가있다 할당이 해제되면 기본적으로 프로그램이 끝날 때까지 머물러있게됩니다. 그 궁금증이 어떻게 유지 될까?
self.myTimer = tempTimer;
// don't call [tempTimer release]
이 때문에 그것을 유지 재산에 automcailcally을 유지합니다 :
[NSTimer scheduledTimerWithTimeInterval:120.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
'NSTimer'는 특별한 배려가 있습니다. 'scheduledTimerWithTimeInterval ...'메시지는 타이머를 초기화 할뿐만 아니라 runloop에도 추가합니다. 이렇게하면'NSTimer'가 해제되는 것과 run-loop 내부에서 소유권을 되찾기 위해'invalidate' 메소드를 호출해야합니다. [- (void) invalidate]에 대한 추가 정보 (http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSTimer_Class/Reference/NSTimer.html#//apple_ref/occ/instm/ NSTimer/무효화). –