提问人:tombuarts 提问时间:5/10/2011 最后编辑:sarnoldtombuarts 更新时间:5/10/2011 访问量:235
NSdate 的问题
Trouble with NSdate
问:
我正在编写一个具有多个视图的程序。我想在视图之间传递一个日期变量。我使用 .我在其中一个视图上声明了变量。然后我设置了.然后,我使用以下代码将天数添加到日期;extern NSDate *chooseDate
NSDate *date
date = chooseDate
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:(int)daycount];
date = [calendar dateByAddingComponents:components toDate:date options:0];
问题似乎是没有被识别为 .代码在 时崩溃。我不知为什么会这样。我希望我已经解释清楚了。有什么想法吗?chooseDate
NSDate
date = [calendar ...]
答:
0赞
FreeAsInBeer
5/10/2011
#1
您正在设置实例。当您尝试使用它时,您确定它存在吗?你可能需要它。chooseDate
autoreleased
retain
评论
0赞
tombuarts
5/10/2011
我检查了。当我设置“date = chooseDate”时,它肯定存在。当我删除代码行“date = [calendar..]”时,程序运行良好。
0赞
Rad'Val
5/10/2011
#2
如果您更改为 .如果是这样,其余的应该几乎是不言自明的。chooseDate = [datePicker date];
chooseDate = [[datePicker date] copy];
评论
0赞
tombuarts
5/17/2011
对不起,回复晚了,我已经离开这里一段时间了。按照您所说的使用“复制”解决了问题,非常感谢。在我过去使用过的所有不同类型的编码中,将一个变量设置为等于另一个变量总是会导致变量的精确副本(即 choosedate = date,当两者都定义为 NSDate 时)。这只是复制日期的问题,还是在将一个变量设置为等于另一个变量时应始终使用“copy”?
0赞
Rad'Val
5/17/2011
问题是,返回一个 autorelease 对象,这意味着当调用它的方法闭包结束时,该对象被释放。当您尝试在日期指针指向 null 或内存地址分配给其他对象时调用它时,因此您得到的错误并不总是简单的崩溃,有时您也会在堆栈中收到一些奇怪的消息。至于它的作用是确保即使原始对象被释放,您仍然拥有副本并可以使用它。[datePicker date]
date = [calendar dateByAddingComponents:components toDate:date options:0];
copy
0赞
tombuarts
5/18/2011
谢谢,这个解释很有帮助。我在堆栈中收到了奇怪的消息,我不知道该如何看待它们。
0赞
Rad'Val
5/18/2011
如果是这样,请考虑选择我的答案,它可以帮助其他有类似问题的其他人,并帮助我炫耀我的声誉:)
下一个:关闭模式视图会使主视图旋转
评论
date
calendar