2010-09-14 89 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