2010-09-14 109 views
0

這好嗎?創建空的NSDate對象

NSDate *myDate; 

因爲我使用之前是這樣的:

NSDate *myDate = [[NSDate alloc] init]; 

if (something) 
    myDate = thisDate; 
else 
    myDate = thatDate; 

[myFunction initWithDate:myDate]; 

我總是得到「它的初始化過程中存儲到‘指明MyDate’值永遠不會讀」。如果我做這樣的事情

if (something) 
    NSDate *myDate = thisDate; 
else 
    NSDate *myDate = thatDate; 

[myFunction initWithDate:myDate]; 

我得到「未使用變量‘指明MyDate’」和「‘指明MyDate’未申報(在一次使用此功能)」

如何釋放樣子?自動釋放?

回答

0

如果你只是想指出一個預先存在的日期,你可以做這樣的事情:

NSDate *myDate = something ? thisDate : thatDate; 
[myFunction initWithDate:myDate]; 

甚至

[myFunction initWithDate:something ? thisDate : thatDate]; 

但是,爲了更清楚地回答你的問題,是的,這可能應該是罰款:

NSDate *myDate; 

if (something) { 
    myDate = thisDate; 
} else { 
    myDate = thatDate; 
} 

也可初始化指明MyDate爲零(myDate = nil),如果你想。就內存管理而言,你只需要設置一個指針 - 你不會創建一個新的對象,或者取得一個現有對象的所有權 - 所以你不需要使用releaseautorelease

+0

這就是我想知道的。如果發佈thisDate或thatDate,myDate指向無處。所以我依靠他們。我認爲它們是由便捷函數創建的(dateFromComponents/dateByAddingTimeInterval返回新的NSDate對象),所以我希望它們是自動發佈的。這裏與內存管理無關? – testing 2010-09-14 15:34:02

0

你的第一次嘗試接近

NSDate *myDate; 

if (something) 
    myDate = thisDate; 
else 
    myDate = thatDate; 

[myFunction initWithDate:myDate]; 

第一行聲明名爲myDate一個NSDate變量。然後運行測試並適當設置myDate的值。

+0

就是這樣,謝謝。抱歉不能將兩個答案都標爲解決方案。 – testing 2010-09-14 15:35:08