Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSDate和x27中的负NSTIME间隔;s日期和时间间隔从现在起:_Objective C_Ios_Nsdate - Fatal编程技术网

Objective c NSDate和x27中的负NSTIME间隔;s日期和时间间隔从现在起:

Objective c NSDate和x27中的负NSTIME间隔;s日期和时间间隔从现在起:,objective-c,ios,nsdate,Objective C,Ios,Nsdate,但是,该代码在2148中给出了日期: #import <Foundation/Foundation.h> #import <stdlib.h> int main(int argc, const char * argv[]) { @autoreleasepool { for(int i = 0; i < 30; i++) { NSDate* date = [NSDate dateWithTimeIntervalSi

但是,该代码在2148中给出了日期:

#import <Foundation/Foundation.h>
#import <stdlib.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        for(int i = 0; i < 30; i++) {
            NSDate* date = [NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval)-((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];
            NSLog(@"%@", date);
        }

    }
    return 0;
}
#导入
#进口
int main(int argc,const char*argv[]
{
@自动释放池{
对于(int i=0;i<30;i++){
NSDate*date=[NSDate date WITH TIMEIVERSICENSNOW:(NSTIMEIVERSIT)-(u_int32_t)i*12*60*60+arc4random_uniform(8*60*60));
NSLog(@“%@”,日期);
}
}
返回0;
}

它应该会从不久前生成半随机的日期和时间。

正如Hot Clicks所说,这是由于在使数字为负数之后对NSTimeInterval施法,而不是先对数字求负数,然后再施法

该行的固定版本如下所示:

NSDate* date = [NSDate dateWithTimeIntervalSinceNow:-(NSTimeInterval)((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];

无符号整数的负数是一个正数。@HotLicks感谢您在得到负数之前对NSTimeInterval进行强制转换。
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:-(NSTimeInterval)((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];