2012-04-25 31 views
0

変数annoInizioとannoFineがmostrarisultatoメソッド内で使用可能であることを希望します。どのようにできるのか?私は別の解決策を試みたが、できなかった。私は、コード内のどこでも使用されるグローバル変数を提供すると思います。メソッド間での変数の受け渡し

+ (int) annoInizio { 
    static int singleton; 
    if (!singleton) { 
     .... 
     singleton = ....; 
    } 
    return singleton; 
} 

他の方法は、インスタンス変数である:それを処理する

- (id)init { 
    if (self == [super init]) { 
     NSDate *adesso = [NSDate date]; 
     NSDateComponents *adessoComponents = [[NSCalendar currentCalendar] components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:adesso]; 
     //NSDate *dopo = [NSDate date]; 
     NSDateComponents *dopoComponents = [[NSCalendar currentCalendar] components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:adesso]; 


     NSDate *oggiAMezzanotte = [[NSCalendar currentCalendar] dateFromComponents:adessoComponents]; 
     NSDate *oggifinito = [[NSCalendar currentCalendar] dateFromComponents:dopoComponents]; 
     //[datePicker setDateValue:oggiAMezzanotte]; 
     //[datePicker2 setDateValue:oggiAMezzanotte]; 

     int daysToAdd = 364; 
     NSDate *newDate1 = [oggifinito dateByAddingTimeInterval:60*60*24*daysToAdd]; 
     self.dataInizio = oggiAMezzanotte; 
     int annoInizio = [adessoComponents year]; 
     NSLog(@"Anno inizio %i.", annoInizio); 
     self.dataFine = newDate1;// Sets these to "now" 
     NSDateComponents *newDate1Components = [[NSCalendar currentCalendar] components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:newDate1]; 
     int annoFine = [newDate1Components year]; 
     NSLog(@"Anno fine %i.", annoFine); 
    } 
    return self; 
} 

- (IBAction)mostrarisultato:(id)sender; 
{ 



    if (dataFine<dataInizio) { 
     [NSApp beginSheet:theSheet 
      modalForWindow:(NSWindow *)_window 
      modalDelegate:self 
      didEndSelector:nil 
       contextInfo:nil]; 
    } else { 
     [progressIndicator startAnimation: self]; 
     [textView setString: @""]; 
     int lunedi = 0; 
     int martedi = 0; 
     int mercoledi = 0; 
     int giovedi = 0; 
     int venerdi = 0; 
     int sabato = 0; 
     int domenica = 0; 

答えて

1

つのオブジェクト指向方法は、結果をキャッシュクラスメソッドであろう。たとえば、dataInitioは、インスタンス変数とプロパティの両方であるように見えます。

もちろん、代わりにグローバル変数を使用することができます。ファイルの先頭に 'int annoInizio'を追加し、int annoInizio = ...annoInizio = ...に変更して-initに変更してください。

関連する問題