繁体   English   中英

比较两个NSDate失败

[英]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]以便在实际使用该对象之前将其释放。 通常你想与类实例对象做什么是allocinit它们,然后release他们在dealloc方法。

希望对您有帮助

实际上,今天才是问题所在。 内存地址位于控制台中,我将鼠标悬停在对象上以找到一个匹配项。 我只是保留它,并在方法末尾将其释放。 感谢您的所有回答;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM