[英]compare two NSDate fails
我尝试比较两个NSDate对象。 但是它总是失败,我看不出有什么问题。
-(IBAction)nextAction
{
NSDate *today = [NSDate date];
if([appStateDate compare:today] == NSOrderedAscending) {
dispatch_async(calcQueue, ^{ [self plusOneDate]; });
}
}
没有代码,它可以正常工作。
它只是崩溃,并且在main方法的这一行上为EXE_BAD_ACCESS。
int retVal = UIApplicationMain(argc, argv, nil, nil);
和印刷品
'+[ compare:]: unrecognized selector sent to class 0x634d7e0`'
我不太擅长使用调试器,因此,如果您知道任何好的教程或指南,我都希望他们知道;)对不起我的英语
看起来appStateDate尚未初始化,或者包含NSDate以外的内容。 您在哪里初始化它?
比较2个NSDate
日期:
NSDate *date1; NSDate *date2;
if ([date1 timeIntervalSinceDate:date2] > 0)
// date1 is newer.
从这个主题,我想说-SIB -Alekseyev,在-(IBAction)nextAction中 ,appStateDate看起来好像不是已声明/初始化。
也许您应该在-(void)plusOneDate方法中编写已经拥有的内容。
为了检查,您还可以NSLog变量的类型和appStateDate的值以查看它是否应该是它应该的。
我也是一个初学者,我不确定,但是只是想帮助:)
首先,我强烈建议您阅读《 内存管理编程指南》 ,以更好地了解内存管理。
在我看来,由于您分配appStateDate
的方式,它不再是NSDate
类的实例。 当您使用[NSDate date]
您实际上是在说[[[NSDate alloc]init]autorelease]
以便在实际使用该对象之前将其释放。 通常你想与类实例对象做什么是alloc
和init
它们,然后release
他们在dealloc
方法。
希望对您有帮助
实际上,今天才是问题所在。 内存地址位于控制台中,我将鼠标悬停在对象上以找到一个匹配项。 我只是保留它,并在方法末尾将其释放。 感谢您的所有回答;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.