2010-07-06 3 views
0

viewDidLoad 메서드로 만든 NSDate와 버튼을 클릭하여 NSDate를 비교하려고합니다. viewDidLoad가 실행 된 이후로 버튼을 클릭하고 시간차를 찾을 수 있기를 원합니다. 나는 아무런 차이가 없다. 어떤 아이디어?NSDate timeInterval = nil

#import "TimeViewController.h" 

id startTime; 

@implementation TimeViewController 
- (void)viewDidLoad { 

    NSDate *startTime = [NSDate date]; 
    NSLog(@"startTime = %@",startTime); 
} 

- (IBAction)buttonPressed{ 

    NSDate *now = [NSDate date]; 
    NSLog(@"now = %@",now); 
    double timeInterval = [now timeIntervalSinceDate:startTime]; 
    NSLog(@"time difference = %@",[NSString stringWithFormat:@"%g",timeInterval]); 

} 

답변

3

당신은

전역에서
id startTime; 

viewDidLoad 내부도

NSDate *startTime = [NSDate date]; 

있습니다. 두 번째 명령문은 글로벌 변수를 숨기는 startTime이라는 로컬 변수를 만듭니다.

startTime=[[NSDate date] retain]; 

을 대신 사용하십시오.

그렇다면 이 아니며을 사용하면 글로벌 변수를 만들 수 있습니다. 나는 또한 알려진 개체를 개최 id를 사용하는을 을하지 좋을 것

-(void)dealloc{ 
    [startDate release]; 
    [super dealloc]; 
} 

를 잊지 마세요,

@interface TimeViewController :NSObject{ 
     .... 
     NSDate*startDate; 
} 
... 
@end 

와 쿠비와 같은

말했다 : 대신에 인스턴스 변수와 속성을 . 누가 너 한테 말했어? 그건 아주 나쁜 습관입니다. 전역 변수를 선언하는 경우에도 컴파일러에서 정의되지 않은 메서드에 대해 경고 할 수 있도록

NSDate*startDate; 

을 사용해야합니다.