2013-07-11 118 views
-1

我有一個實例,根據一年中的某一天返回地球離太陽的距離。由於它內部計算今天的日期,因此它是獨立的。但是我想改變它,所以我把它作爲一個整數在一年中傳遞給它。做這件事的最好方法是什麼?我有什麼選擇嗎?將變量傳遞給類/實例的最佳方法是什麼?

-(double) calculateDistranceFromSun 
{ 
    // Calculate Day of the Year 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]]; 
    setDayOfYear = dayOfYear; 
    // Source: curious.astro.cornell.edu/question.php?number=582 
    double Rad2Deg  = Pi/180; 
    double Theta   = (dayOfYear/(DaysInYear/360)*Rad2Deg); 
    double CC   = cos(Theta); 
    setDistanceFromSun = SemiMajorAxis*(1-pow(Eccentricy,2))/(1+Eccentricy*CC); 
    return setDistanceFromSun; 
} 
+1

爲什麼'setDayOfYear'和'setDistanceFromSun'不是局部變量? – Thilo

+0

您可以使用參數化方法,將「日」看作整數,並用它來計算距離。 – Yogi

+0

你只看到這個實例。這個類有幾個類似的例程,像setDesitanceFromSun這樣的變量在其中的許多變量中被使用,因此被聲明爲更高。您的建議是否在日常工作中使用delcare? –

回答

1
-(double) calculateDistranceFromSunWithDate:(NSDate *)date 
{ 
    // Calculate Day of the Year 
    NSUInteger dayOfYear = [gregorian ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:date]; 
    setDayOfYear = dayOfYear; 
    // Source: curious.astro.cornell.edu/question.php?number=582 
    double Rad2Deg  = Pi/180; 
    double Theta   = (dayOfYear/(DaysInYear/360)*Rad2Deg); 
    double CC   = cos(Theta); 
    setDistanceFromSun = SemiMajorAxis*(1-pow(Eccentricy,2))/(1+Eccentricy*CC); 
    return setDistanceFromSun; 
} 
+0

爲什麼你把'日期'作爲參數?一個整數'天'應該是足夠的。 – Yogi

+0

的確如此,儘管我認爲傳入NSDate更直觀,因爲此參數代表一年中的某一天。 – Stavash

+0

非常感謝 - 應該已經解決了這個問題。 –

相關問題